summaryrefslogtreecommitdiff
path: root/runtime/contrib/android_benchmark_app/java/com/ndk/tflbench/MainActivity.java
diff options
context:
space:
mode:
Diffstat (limited to 'runtime/contrib/android_benchmark_app/java/com/ndk/tflbench/MainActivity.java')
-rw-r--r--runtime/contrib/android_benchmark_app/java/com/ndk/tflbench/MainActivity.java110
1 files changed, 110 insertions, 0 deletions
diff --git a/runtime/contrib/android_benchmark_app/java/com/ndk/tflbench/MainActivity.java b/runtime/contrib/android_benchmark_app/java/com/ndk/tflbench/MainActivity.java
new file mode 100644
index 000000000..14bf239a6
--- /dev/null
+++ b/runtime/contrib/android_benchmark_app/java/com/ndk/tflbench/MainActivity.java
@@ -0,0 +1,110 @@
+package com.ndk.tflbench;
+
+import android.app.Activity;
+import android.os.Bundle;
+import android.content.Intent;
+import android.view.View;
+import android.view.Menu;
+import android.view.MenuItem;
+import android.widget.TextView;
+import android.widget.Button;
+import android.net.Uri;
+import android.content.res.AssetFileDescriptor;
+import android.content.res.AssetManager;
+import android.graphics.Bitmap;
+import android.os.SystemClock;
+import android.os.Trace;
+import android.util.Log;
+import java.io.BufferedReader;
+import java.io.FileInputStream;
+import java.io.IOException;
+import java.io.InputStreamReader;
+import java.nio.ByteBuffer;
+import java.nio.ByteOrder;
+import java.nio.MappedByteBuffer;
+import java.nio.channels.FileChannel;
+import java.util.ArrayList;
+import java.util.Comparator;
+import java.util.List;
+import java.util.PriorityQueue;
+import java.util.Vector;
+
+public class MainActivity extends Activity {
+
+ static {
+ System.loadLibrary("android_benchmark_native");
+ }
+
+ private void setModel(final String message) {
+ final TextView textView = (TextView)findViewById(R.id.model_label);
+ runOnUiThread(new Runnable() {
+ @Override
+ public void run() { textView.setText(message); }
+ });
+ }
+
+ private void setTitle(final String message) {
+ final TextView textView = (TextView)findViewById(R.id.title_label);
+ runOnUiThread(new Runnable() {
+ @Override
+ public void run() { textView.setText(message); }
+ });
+ }
+
+ private void setText(final String message) {
+ final TextView textView = (TextView)findViewById(R.id.message_label);
+ runOnUiThread(new Runnable() {
+ @Override
+ public void run() { textView.setText(message); }
+ });
+ }
+
+ private MappedByteBuffer buffer;
+
+ @Override
+ protected void onCreate(Bundle savedInstanceState) {
+ super.onCreate(savedInstanceState);
+ setContentView(R.layout.activity_main);
+
+ setModel(getModelName());
+
+ // Load Tensorflow Lite model
+ try
+ {
+ AssetManager assets = getAssets();
+ AssetFileDescriptor fileDescriptor = assets.openFd("model.tflite");
+ FileInputStream inputStream = new FileInputStream(fileDescriptor.getFileDescriptor());
+ FileChannel fileChannel = inputStream.getChannel();
+ final long startOffset = fileDescriptor.getStartOffset();
+ final long declaredLength = fileDescriptor.getDeclaredLength();
+
+ buffer = fileChannel.map(FileChannel.MapMode.READ_ONLY, startOffset, declaredLength);
+ } catch (IOException e) {
+ Log.e("MYAPP", "exception", e);
+ }
+
+ Button btn_interp = (Button)findViewById(R.id.button_interp);
+ btn_interp.setOnClickListener(new Button.OnClickListener() {
+ @Override public void onClick(View view) {
+ new Thread(new Runnable() {
+ @Override
+ public void run() { runInterpreterBenchmark(buffer); }
+ }).start();
+ }
+ });
+
+ Button btn_nnapi = (Button)findViewById(R.id.button_nnapi);
+ btn_nnapi.setOnClickListener(new Button.OnClickListener() {
+ @Override public void onClick(View view) {
+ new Thread(new Runnable() {
+ @Override
+ public void run() { runNNAPIBenchmark(buffer); }
+ }).start();
+ }
+ });
+ }
+
+ public native String getModelName();
+ public native void runInterpreterBenchmark(MappedByteBuffer buffer);
+ public native void runNNAPIBenchmark(MappedByteBuffer buffer);
+}