OSDN Git Service

WIP: Handle BaseApp#send()
authoreagletmt <eagletmt@gmail.com>
Fri, 5 Oct 2012 10:57:43 +0000 (19:57 +0900)
committereagletmt <eagletmt@gmail.com>
Fri, 5 Oct 2012 12:07:35 +0000 (21:07 +0900)
CUTEn/project.properties
CUTEn/src/jp/ac/titech/sharp4k/cuten/TaskActivity.java
CUTEnLib/src/jp/ac/titech/sharp4k/cuten/BaseApp.java
Hello3Task/.classpath
Hello3Task/src/jp/ac/titech/sharp4k/cuten/sampletask/Hello3Task.java
jar/CUTEnLib.jar [new file with mode: 0644]

index 2b98f35..721a856 100644 (file)
@@ -12,3 +12,4 @@
 
 # Project target.
 target=android-13
+android.library.reference.1=../CUTEnLib
index 331e622..a2063ac 100644 (file)
@@ -2,9 +2,6 @@ package jp.ac.titech.sharp4k.cuten;
 
 import java.io.File;
 import java.io.IOException;
-import java.lang.reflect.Constructor;
-import java.lang.reflect.Method;
-import java.util.Date;
 
 import android.app.Activity;
 import android.content.Context;
@@ -27,6 +24,8 @@ public class TaskActivity extends Activity {
        public static final String QUAL_NAME_KEY = "qualName";
        public static final String RESULT_KEY = "result";
 
+       private BaseApp taskApp;
+
        @Override
        public void onCreate(Bundle savedInstanceState) {
                super.onCreate(savedInstanceState);
@@ -45,11 +44,22 @@ public class TaskActivity extends Activity {
                        DexClassLoader cl = loadDex(new File(getDir("apks",
                                        Context.MODE_PRIVATE).getPath(), apkName));
                        Class<?> klass = cl.loadClass(qualName);
-                       Log.d(TAG, "Successfully loaded " + qualName);
-                       Constructor<?> ctor = klass.getConstructor();
-                       Object task = ctor.newInstance();
-                       Method meth = klass.getMethod("createView", Context.class);
-                       View view = (View) meth.invoke(task, this);
+                       Log.d(TAG, "Successfully loaded " + klass.getName());
+
+                       taskApp = (BaseApp) klass.newInstance();
+                       taskApp.setSender(new ResultSender() {
+                               @Override
+                               public void send(int[] results) {
+                                       Log.d(TAG, "send: " + results[0]);
+                               }
+                       });
+                       taskApp.setCloseRequester(new CloseRequester() {
+                               @Override
+                               public void close() {
+                                       closeApp();
+                               }
+                       });
+                       View view = taskApp.createView(this, getResources());
                        Log.d(TAG, "Successfully created view of " + qualName);
 
                        setupLayout(view);
@@ -80,12 +90,17 @@ public class TaskActivity extends Activity {
                b.setOnClickListener(new OnClickListener() {
                        @Override
                        public void onClick(View v) {
-                               setResponse(new Date().getSeconds());
-                               finish();
+                               closeApp();
                        }
                });
        }
 
+       private void closeApp() {
+               taskApp.onClose();
+               setResponse(0);
+               finish();
+       }
+
        private DexClassLoader loadDex(File dexFile) throws IOException {
                File odexDir = getDir("odex", Context.MODE_PRIVATE);
                return new DexClassLoader(dexFile.getAbsolutePath(),
index cc807f6..289636e 100644 (file)
@@ -22,19 +22,19 @@ public abstract class BaseApp {
 
        abstract protected View createView(Context ctx, Resources res);
 
-       void onClose() {
+       protected void onClose() {
        }
 
-       void close() {
+       protected void close() {
                requester.close();
        }
 
-       void onConfigurationChanged() {
+       protected void onConfigurationChanged() {
        }
 
-       void onPause() {
+       protected void onPause() {
        }
 
-       void onResume() {
+       protected void onResume() {
        }
 }
index a4763d1..4d5b5aa 100644 (file)
@@ -4,5 +4,6 @@
        <classpathentry kind="src" path="gen"/>
        <classpathentry kind="con" path="com.android.ide.eclipse.adt.ANDROID_FRAMEWORK"/>
        <classpathentry kind="con" path="com.android.ide.eclipse.adt.LIBRARIES"/>
+       <classpathentry kind="lib" path="../jar/CUTEnLib.jar"/>
        <classpathentry kind="output" path="bin/classes"/>
 </classpath>
index 6e11e49..ca0d845 100644 (file)
@@ -1,18 +1,20 @@
 package jp.ac.titech.sharp4k.cuten.sampletask;
 
-import android.content.Context;
+import java.util.Date;
 
+import jp.ac.titech.sharp4k.cuten.BaseApp;
+import android.content.Context;
+import android.content.res.Resources;
 import android.view.View;
-
 import android.widget.TextView;
 
-public class Hello3Task {
-       public Hello3Task() {
-       }
-
-       public View createView(Context ctx) {
+public class Hello3Task extends BaseApp {
+       @Override
+       protected View createView(Context ctx, Resources res) {
                TextView tv = new TextView(ctx);
                tv.setText("hello3task");
+               int[] results = { new Date().getSeconds(), 0, 0 };
+               sendResult(results);
                return tv;
        }
 }
diff --git a/jar/CUTEnLib.jar b/jar/CUTEnLib.jar
new file mode 100644 (file)
index 0000000..39a6858
Binary files /dev/null and b/jar/CUTEnLib.jar differ