0

GPS に基づく屋外ロケーター アプリケーションを実装しています。

tabview最初のタブには地図と GPS があり、2 番目のタブには Bluetooth 接続があります。

エミュレーターでは、最初のタブは問題なく動作し、2 番目のタブはテストできません。

Android デバイスで起動すると、アプリケーションが強制的に閉じられ、このエラーが発生し、アプリケーションの何が問題なのかわかりません。

どんな助けでも大歓迎です、

`06-05 23:31:36.961: ERROR/AndroidRuntime(3889): FATAL EXCEPTION: main

 06-05 23:31:36.961: ERROR/AndroidRuntime(3889): java.lang.NoSuchMethodError:        android.bluetooth.BluetoothAdapter.listenUsingInsecureRfcommWithServiceRecord

06-05 23:31:36.961: ERROR/AndroidRuntime(3889):     at trail.com.BluetoothChatService$AcceptThread.<init>(BluetoothChatService.java:280)

06-05 23:31:36.961: ERROR/AndroidRuntime(3889):     at trail.com.BluetoothChatService.start(BluetoothChatService.java:119)

06-05 23:31:36.961: ERROR/AndroidRuntime(3889):     at trail.com.BluetoothChat.onResume(BluetoothChat.java:144)

06-05 23:31:36.961: ERROR/AndroidRuntime(3889):     at android.app.Instrumentation.callActivityOnResume(Instrumentation.java:1149)

06-05 23:31:36.961: ERROR/AndroidRuntime(3889):     at android.app.Activity.performResume(Activity.java:3823)

06-05 23:31:36.961: ERROR/AndroidRuntime(3889):     at android.app.ActivityThread.performResumeActivity(ActivityThread.java:3124)
06-05 23:31:36.961: ERROR/AndroidRuntime(3889):     at android.app.LocalActivityManager.moveToState(LocalActivityManager.java:170)

06-05 23:31:36.961: ERROR/AndroidRuntime(3889):     at android.app.LocalActivityManager.dispatchResume(LocalActivityManager.java:518)

06-05 23:31:36.961: ERROR/AndroidRuntime(3889):     at android.app.ActivityGroup.onResume(ActivityGroup.java:58)

06-05 23:31:36.961: ERROR/AndroidRuntime(3889):     at android.app.Instrumentation.callActivityOnResume(Instrumentation.java:1149)

06-05 23:31:36.961: ERROR/AndroidRuntime(3889):     at android.app.Activity.performResume(Activity.java:3823)

06-05 23:31:36.961: ERROR/AndroidRuntime(3889):     at android.app.ActivityThread.performResumeActivity(ActivityThread.java:3124)

06-05 23:31:36.961: ERROR/AndroidRuntime(3889):     at android.app.ActivityThread.handleResumeActivity(ActivityThread.java:3149)

06-05 23:31:36.961: ERROR/AndroidRuntime(3889):     at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2064)
06-05 23:31:36.961: ERROR/AndroidRuntime(3889):     at android.os.Handler.dispatchMessage(Handler.java:99)

06-05 23:31:36.961: ERROR/AndroidRuntime(3889):     at android.os.Looper.loop(Looper.java:123)

06-05 23:31:36.961: ERROR/AndroidRuntime(3889):     at android.app.ActivityThread.main(ActivityThread.java:4633)

06-05 23:31:36.961: ERROR/AndroidRuntime(3889):     at java.lang.reflect.Method.invokeNative(Native Method)

06-05 23:31:36.961: ERROR/AndroidRuntime(3889):     at java.lang.reflect.Method.invoke(Method.java:521)

06-05 23:31:36.961: ERROR/AndroidRuntime(3889):     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:858)
06-05 23:31:36.961: ERROR/AndroidRuntime(3889):     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:616)
06-05 23:31:36.961: ERROR/AndroidRuntime(3889):     at dalvik.system.NativeStart.main(Native Method)

06-05 23:31:36.971: ERROR/RequestQueueHelper(3939): [Thread-10/10] Next pending job not found!!

listenUsingInsecureRfcommWithServiceRecord次の部分で呼び出します。

public AcceptThread(boolean secure) {
        BluetoothServerSocket tmp = null;
        mSocketType = secure ? "Secure":"Insecure";

        // Create a new listening server socket
        try {
            if (secure) {
                tmp = mAdapter.listenUsingRfcommWithServiceRecord(NAME_SECURE,
                    MY_UUID_SECURE);
            } else {
                tmp = mAdapter.listenUsingInsecureRfcommWithServiceRecord(
                        NAME_INSECURE, MY_UUID_INSECURE);
            }
        } catch (IOException e) {
            Log.e(TAG, "Socket Type: " + mSocketType + "listen() failed", e);
        }
        mmServerSocket = tmp;
    }
4

1 に答える 1

0

考えられる解決策は、try-catchブロックを適用して、アプリを実行してみることです。

try{
public AcceptThread(boolean secure) { BluetoothServerSocket tmp = null; mSocketType = secure ? "Secure":"Insecure";
}
catch(Exception e){
e.printStackTrace();
}

また、お持ちのデバイスのOSバージョンを確認してください...

この致命的な例外は、デバイスのOSバージョンが低く、メソッドがデバイスROMにないことが原因で発生します。

于 2012-12-03T07:32:17.533 に答える