2012-10-24 231 views
0

我m建立一個android藍牙聊天應用程序,並面臨一些問題。我的問題是:我無法檢測範圍內的可用藍牙設備,無法顯示在列表中。作爲即時新到android編程無法檢測到問題。請幫助我。android藍牙聊天應用程序

我的代碼是:

public class BluetoothSearchActivity extends Activity { 

    ArrayAdapter<String> btArrayAdapter; 
    BluetoothAdapter mBluetoothAdapter; 
    TextView stateBluetooth; 

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

     ImageView BluetoothSearchImageView=new ImageView(this); 
     BluetoothSearchImageView.setImageResource(R.drawable.inner1); 

     setContentView(BluetoothSearchImageView); 
     setContentView(R.layout.activity_bluetooth_search); 

     mBluetoothAdapter=BluetoothAdapter.getDefaultAdapter(); 

     ListView listDevicesFound=(ListView) findViewById(R.id.myList); 

     btArrayAdapter=new ArrayAdapter<String> (BluetoothSearchActivity.this,android.R.layout.simple_list_item_1); 

     listDevicesFound.setAdapter(btArrayAdapter); 

     registerReceiver(ActionFoundReceiver,new IntentFilter(BluetoothDevice.ACTION_FOUND)); 

     btArrayAdapter.clear(); 
     mBluetoothAdapter.startDiscovery(); 

    } 

    @Override 
    protected void onDestroy() { 
     super.onDestroy(); 
     unregisterReceiver(ActionFoundReceiver); 
    } 

    private final BroadcastReceiver ActionFoundReceiver=new BroadcastReceiver() { 

     @Override 
     public void onReceive(Context context, Intent intent) { 
      // TODO Auto-generated method stub 
      String action=intent.getAction(); 
      if(BluetoothDevice.ACTION_FOUND.equals(action)) { 
       BluetoothDevice device=intent.getParcelableExtra(BluetoothDevice.EXTRA_DEVICE); 
       btArrayAdapter.add(device.getName()+"\n"+device.getAddress()); 
       btArrayAdapter.notifyDataSetChanged(); 
      } 
     } 
    }; 
+2

你擁有所有正確的權限? – thepoosh

回答

0

你有沒有設置其他設備如發現?默認情況下,大多數智能手機對配對設備都是不可見的,您需要啓用可見性才能看到它。

我看到你使用API​​參考的例子,所以它應該工作。在AndroidManifest.xml文件

<uses-permission android:name="android.permission.BLUETOOTH" /> 
<uses-permission android:name="android.permission.BLUETOOTH_ADMIN" /> 

請確保您有。

除此之外,你的對象有一些奇怪的命名約定。 ActionFoundReceiver應該是actionFoundReceiver(它的對象不是一個類),但沒什麼大不了的。

如果您收到任何類型的錯誤信息,請將其發佈。

編輯:您可以在Log.d(標記,字符串)中寫出設備名稱和地址,以便在logcat調試中讀出它,消除了顯示列表時出現的問題。

編輯:爲Log.d

import android.util.Log; 

//to use Log.d(String, String) 
Log.d("someTag", "your text here"); 

您可以使用Log.d打印的調試信息,幫助您瞭解如果您的代碼執行正確添加代碼。我會Log.d("tag", device.getName()+" "+device.getAddress());看看你是否gettnig任何來自聽衆的迴應。並消除你可能有任何問題,從試圖把它變成一個列表等。

- 托馬斯Flølo

+0

如何在我的project.please中使用Log.d(標記,字符串)告訴me.with編寫代碼。 – user1770346

+0

我會將我編輯的代碼放入您的ActionFoundReceiver中。 – tFlolo

+0

要查看Log.d的輸出,您需要在Eclipse中顯示logcat窗口或從命令提示符使用ADB。 – tFlolo