0

Bluetooth接続の受信文字列などのコードのデバッグビット。ただし、ClassCastExceptionコードの行でを取得しているようです

String read_Message = (String) msg.obj;

しかし、前のコードを使用してバイトを収集し、文字列に配置すると、実行されますが、1つの文字列にすべてのデータが収集されるわけではありません。

何かをキャストしたり、何かを見逃したりしていませんか。何かが欠けていることはわかっていますが、それを見ることができません。

これ以上のコードが必要な場合は、私が配置しますが、他のすべては機能しています

助けてくれてありがとう

     // The Handler that gets information back from the BluetoothService
    private final Handler mHandler = new Handler() {
        @Override
        public void handleMessage(Message msg) 
        {
            switch (msg.what)
            {
            case MESSAGE_STATE_CHANGE:
//              if (D) Log.i(TAG, "MESSAGE_STATE_CHANGE: " + msg.arg1);
                switch (msg.arg1) 
                {
                case BluetoothService.STATE_CONNECTED:
                    break;
                case BluetoothService.STATE_CONNECTING:
                    //mTitle.setText(R.string.title_connecting);
                    break;
                case BluetoothService.STATE_LISTEN:
                case BluetoothService.STATE_NONE:
                    //mTitle.setText(R.string.title_not_connected);
                    break;
                }
                break;
            case MESSAGE_WRITE:
                //code to be entered here
                break;
            case MESSAGE_READ:
                //Previous code
                //byte[] read_Buf = (byte[]) msg.obj;
                // construct a string from the valid bytes in the buffer
                //String read_Message = new String(read_Buf, 0, msg.arg1);

                String read_Message = (String) msg.obj;

                if (mSmokeReadingArrayAdapter.isEmpty())
                    mSmokeReadingArrayAdapter.add("");

                mAdapter_Text.set(0, mAdapter_Text.get(0).toString() + read_Message);  

                mSmokeReadingArrayAdapter.notifyDataSetChanged();

                organiseString(read_Message);
                break;
            case MESSAGE_DEVICE_NAME:
                //code to be entered here
                break;
            case MESSAGE_TOAST:
                Toast.makeText(getApplicationContext(), msg.getData().getString(TOAST), Toast.LENGTH_SHORT).show();     // shows 'alert' messages
                break;
            }
        }
    };
4

1 に答える 1

0

問題が解決しました。文字列ではなくバイト配列として定義されていたBluetoothサービスコードと関係がありました

于 2013-03-22T14:18:11.353 に答える