使用BluetoothSocket在OutputStream上使用NullPointerException?

时间:2015-07-23 04:05:01

标签: java android bluetooth

我正在尝试将数据发送到HC-05蓝牙模块,但我不确定我做错了什么。我的主要代码问题在于下面。 我试图抓住一些特定的文本并以字节为单位发送。 我已经在启动应用程序之前配对了我的模块,并使用我的BluetoothAdapter上的getBondedDevices()遍历所有配对设备,并确认它已配对。

public void send(View view) {
    try {
        Log.d("TAG", "Sending!!!");
        OutputStream os = mConnectionSocket.getOutputStream();
        Log.d("TAG", "Text is: " + mSendText.getText().toString().getBytes());
        // This lines under produces the error
        os.write(mSendText.getText().toString().getBytes());
        os.close();
        Log.d("TAG", "Written...");
    } catch (IOException e) {
        e.printStackTrace();
    }
}

以下是确认设备连接后用于获取BluetoothSocket的代码。 mModule是我想要发送数据的BluetoothDevice对象。

       if(isAlreadyConnected) {
        try {
            mConnectionSocket = mModule.createRfcommSocketToServiceRecord(mUUID);
            new Thread(new Runnable() {

                @Override
                public void run() {
                    try {
                        mConnectionSocket.connect();
                    } catch (IOException e ) {e.printStackTrace();}
                }
            });
        } catch (IOException e) {
            e.printStackTrace();
        }
    } else {
        Log.d("TAG", "Not connected!");
    }

这是错误的堆栈跟踪。

java.lang.IllegalStateException: Could not execute method of the activity
            at android.view.View$1.onClick(View.java:3969)
            at android.view.View.performClick(View.java:4640)
            at android.view.View$PerformClick.run(View.java:19421)
            at android.os.Handler.handleCallback(Handler.java:733)
            at android.os.Handler.dispatchMessage(Handler.java:95)
            at android.os.Looper.loop(Looper.java:136)
            at android.app.ActivityThread.main(ActivityThread.java:5479)
            at java.lang.reflect.Method.invokeNative(Native Method)
            at java.lang.reflect.Method.invoke(Method.java:515)
            at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1283)
            at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1099)
            at dalvik.system.NativeStart.main(Native Method)
     Caused by: java.lang.reflect.InvocationTargetException
            at java.lang.reflect.Method.invokeNative(Native Method)
            at java.lang.reflect.Method.invoke(Method.java:515)
            at android.view.View$1.onClick(View.java:3964)
            at android.view.View.performClick(View.java:4640)
            at android.view.View$PerformClick.run(View.java:19421)
            at android.os.Handler.handleCallback(Handler.java:733)
            at android.os.Handler.dispatchMessage(Handler.java:95)
            at android.os.Looper.loop(Looper.java:136)
            at android.app.ActivityThread.main(ActivityThread.java:5479)
            at java.lang.reflect.Method.invokeNative(Native Method)
            at java.lang.reflect.Method.invoke(Method.java:515)
            at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1283)
            at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1099)
            at dalvik.system.NativeStart.main(Native Method)
     Caused by: java.lang.NullPointerException
            at android.bluetooth.BluetoothSocket.write(BluetoothSocket.java:510)
            at android.bluetooth.BluetoothOutputStream.write(BluetoothOutputStream.java:85)
            at java.io.OutputStream.write(OutputStream.java:82)
            at **com.test.arduinobluetoothdatasender.MainActivity.send(MainActivity.java:133)**
            at java.lang.reflect.Method.invokeNative(Native Method)
            at java.lang.reflect.Method.invoke(Method.java:515)
            at android.view.View$1.onClick(View.java:3964)
            at android.view.View.performClick(View.java:4640)
            at android.view.View$PerformClick.run(View.java:19421)
            at android.os.Handler.handleCallback(Handler.java:733)
            at android.os.Handler.dispatchMessage(Handler.java:95)
            at android.os.Looper.loop(Looper.java:136)
            at android.app.ActivityThread.main(ActivityThread.java:5479)
            at java.lang.reflect.Method.invokeNative(Native Method)
            at java.lang.reflect.Method.invoke(Method.java:515)
            at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1283)
            at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1099)
            at dalvik.system.NativeStart.main(Native Method)

当我发表评论时,错误就消失了:

os.write(mSendText.getText().toString().getBytes());

不确定我做错了什么,但这可能是显而易见的事。

0 个答案:

没有答案