2013-03-20 41 views
0

調試位接收串等。然而,似乎在代碼ClassCastException異常與代碼藍牙連接的handleMessage

String read_Message = (String) msg.obj; 

線將得到一個ClassCastException但如果我是用我以前的代碼位,並收集字節並放入字符串中,但不會收集一個字符串中的所有數據。

我沒有施放任何東西或錯過了一些東西,因爲我知道我錯過了一些東西但看不到它。

如果有任何更多的代碼需要,我會放了,一切工作

感謝所有幫助

 // 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; 
      } 
     } 
    }; 

回答

0

問題解決了。它與被定義爲字節數組而不是字符串的藍牙服務代碼相關