0

友達と一緒にプロジェクトに取り組んでおり、そのために Android アプリケーションを作成する必要があります。(私はJavaでのプログラミングの初心者です)。

まず、良いチュートリアル ( http://www.buildcircuit.com/sensorgraph-using-android-amarino-and-arduino/ ) に従って、arduino (マイクロコントローラー) と arduino に接続を作成する方法を説明します。アマリノ(ブルートゥース)付き。

プログラムは可変電圧の値を取得し、電話に表示します。

しかし、問題があります。私のプログラムは動作しません。携帯電話にアップロードすると、「残念ながら、SensorGraph2 が停止しました」というエラー メッセージが表示された黒いウィンドウが表示されます。どうすればよいかわかりません。

これは SensorGrpah.java です。

package edu.mit.media.hlt.sensorgraph;
import android.app.Activity;
    import android.content.BroadcastReceiver;
    import android.content.Context;
    import android.content.Intent;
    import android.content.IntentFilter;
    import android.os.Bundle;
    import android.widget.TextView;
    import at.abraxas.amarino.Amarino;
    import at.abraxas.amarino.AmarinoIntent;


public class SensorGraph extends Activity {


    private static final String DEVICE_ADDRESS =  "00:15:FF:F2:0F:A8";

    private GraphView mGraph; 
    private TextView mValueTV;

    private ArduinoReceiver arduinoReceiver = new ArduinoReceiver();


    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

        setContentView(R.layout.main);


        mGraph = (GraphView)findViewById(R.id.graph);
        mValueTV = (TextView) findViewById(R.id.value);

        mGraph.setMaxValue(1024);
    }

    @Override
    protected void onStart() {
        super.onStart();

        registerReceiver(arduinoReceiver, new IntentFilter(AmarinoIntent.ACTION_RECEIVED));


        Amarino.connect(this, DEVICE_ADDRESS);
    }


    @Override
    protected void onStop() {
        super.onStop();


        Amarino.disconnect(this, DEVICE_ADDRESS);


        unregisterReceiver(arduinoReceiver);
    }



    public class ArduinoReceiver extends BroadcastReceiver {

        @Override
        public void onReceive(Context context, Intent intent) {
            String data = null;


            final int dataType = intent.getIntExtra(AmarinoIntent.EXTRA_DATA_TYPE, -1);


            if (dataType == AmarinoIntent.STRING_EXTRA){
                data = intent.getStringExtra(AmarinoIntent.EXTRA_DATA);

                if (data != null){
                    mValueTV.setText(data);
                    try {

                        final int sensorReading = Integer.parseInt(data);
                        mGraph.addDataPoint(sensorReading);
                    } 
                    catch (NumberFormatException e) { /* oh data was not an integer */ }
                }
            }
        }
    }

}

および main.xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    >
    <edu.mit.media.hlt.sensorgraph.GraphView
        android:id="@+id/graph"
        android:layout_width="fill_parent" 
        android:layout_height="fill_parent"
        android:layout_weight="4"
    />
    <TextView 
        android:id="@+id/value"
        android:layout_width="fill_parent" 
        android:layout_height="fill_parent"
        android:layout_weight="6"
        android:text="@string/hello"
        android:textSize="40sp"
        android:gravity="center"
        android:background="#fff"
    />
</LinearLayout>

電話にアップロードしようとしているときのlogCat

05-14 00:30:56.640: E/AndroidRuntime(29568): FATAL EXCEPTION: main
05-14 00:30:56.640: E/AndroidRuntime(29568): java.lang.NoClassDefFoundError: at.abraxas.amarino.Amarino
05-14 00:30:56.640: E/AndroidRuntime(29568):    at edu.mit.media.hlt.sensorgraph.SensorGraph.onStart(SensorGraph.java:71)
05-14 00:30:56.640: E/AndroidRuntime(29568):    at android.app.Instrumentation.callActivityOnStart(Instrumentation.java:1167)
05-14 00:30:56.640: E/AndroidRuntime(29568):    at android.app.Activity.performStart(Activity.java:5216)
05-14 00:30:56.640: E/AndroidRuntime(29568):    at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2073)
05-14 00:30:56.640: E/AndroidRuntime(29568):    at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2125)
05-14 00:30:56.640: E/AndroidRuntime(29568):    at android.app.ActivityThread.access$600(ActivityThread.java:140)
05-14 00:30:56.640: E/AndroidRuntime(29568):    at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1227)
05-14 00:30:56.640: E/AndroidRuntime(29568):    at android.os.Handler.dispatchMessage(Handler.java:99)
05-14 00:30:56.640: E/AndroidRuntime(29568):    at android.os.Looper.loop(Looper.java:137)
05-14 00:30:56.640: E/AndroidRuntime(29568):    at android.app.ActivityThread.main(ActivityThread.java:4898)
05-14 00:30:56.640: E/AndroidRuntime(29568):    at java.lang.reflect.Method.invokeNative(Native Method)
05-14 00:30:56.640: E/AndroidRuntime(29568):    at java.lang.reflect.Method.invoke(Method.java:511)
05-14 00:30:56.640: E/AndroidRuntime(29568):    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1006)
05-14 00:30:56.640: E/AndroidRuntime(29568):    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:773)
05-14 00:30:56.640: E/AndroidRuntime(29568):    at dalvik.system.NativeStart.main(Native Method)

私を助けてくれてありがとう。

4

1 に答える 1

0

これは非常によくあることで、今日も同じ問題がありました。プロジェクトにフォルダーlibsを作成し、外部jarを追加する代わりに、このフォルダーにAmarinoLibraryのjarを追加して解決しました。この後、すべてうまくいきました。これがあなたに役立つことを願っています:)。

于 2013-12-04T06:28:29.640 に答える