package com.example.javascriptdatademo;
import org.json.JSONArray;
import org.json.JSONException;
import android.app.Activity;
import android.app.Application;
import android.content.Context;
import android.util.Log;
import android.webkit.JavascriptInterface;
public class ArrayApplication extends Application {
static final String TAG = "JavascriptDataDemo";
double[] data = new double[] {42.6, 24, 17, 15.4};
/** This passes our data out to the JS */
@JavascriptInterface
public String getData() {
Log.d(TAG, "getData() called");
return a1dToJson(data).toString();
}
/** Allow the JavaScript to pass some data in to us. */
@JavascriptInterface
public void setData(String newData) throws JSONException {
Log.d(TAG, "MainActivity.setData()");
JSONArray streamer = new JSONArray(newData);
data = new double[streamer.length()];
for (int i = 0; i < streamer.length(); i++) {
Double n = streamer.getDouble(i);
data[i] = n;
}
}
private Activity activity;
public Context getActivity() {
return activity;
}
public void setActivity(Activity app) {
this.activity = app;
}
@JavascriptInterface
public void finish() {
Log.d(TAG, "ArrayApplication.finish()");
activity.finish();
}
/** Sorry for not using the standard org.json.JSONArray but even in Android 4.2 it lacks
* the JSONArray(Object[]) constructor, making it too painful to use.
*/
private String a1dToJson(double[] data) {
StringBuffer sb = new StringBuffer();
sb.append("[");
for (int i = 0; i < data.length; i++) {
double d = data[i];
if (i > 0)
sb.append(",");
sb.append(d);
}
sb.append("]");
return sb.toString();
}
}