2016-04-08 17 views
1

最近Androidを学んでいます。私は、Bluetoothデバイスを検索する機能を実装しようとしました。これまでにペア設定したすべてのデバイスを一覧表示することはできますが、新しいデバイスを検出することはできません。Bluetoothスキャンで何も返されない

権限はAndroidManifest.xmlに設定されています。

public void listDiscoverableDevices(boolean status) { 
    // Create a BroadcastReceiver for ACTION_FOUND 
    mBluetoothAdapter.cancelDiscovery(); 
    mArrayAdapter.clear(); 
    mDisplay.setText("Search"); 
    mReceiver = new BroadcastReceiver() { 
     public void onReceive(Context context, Intent intent) { 
      String action = intent.getAction(); 
      //BluetoothDevice. 
      if(BluetoothDevice.ACTION_FOUND.equals(action)) { 
       BluetoothDevice device = intent.getParcelableExtra(BluetoothDevice.EXTRA_DEVICE); 
       mArrayAdapter.add(device.getAddress()); 
      } else if(BluetoothAdapter.ACTION_DISCOVERY_STARTED.equals(action)) { 
       //mDisplay.setText(action); 
       mArrayAdapter.add(action); 
      } else if(BluetoothAdapter.ACTION_DISCOVERY_FINISHED.equals(action)) { 
       //mDisplay.setText(action); 
       mArrayAdapter.add(action); 
      } 
     } 
    }; 

    // Register the BroadcastReceiver 
    IntentFilter filter = new IntentFilter(); 
    filter.addAction(BluetoothDevice.ACTION_FOUND); 
    filter.addAction(BluetoothAdapter.ACTION_DISCOVERY_STARTED); 
    filter.addAction(BluetoothAdapter.ACTION_DISCOVERY_FINISHED); 
    registerReceiver(mReceiver, filter); // Don't forget to unregister during onDestroy 

    if(!mBluetoothAdapter.startDiscovery()) { 
    mDisplay.setText("Discover failed!"); 
    } 
} 

BluetoothDevice.ACTION_FOUNDアクションが受信されることはありませんように私には思える:

は、ここに私のコードです。私は2日間これと闘ってきました。何か案が?

ありがとう、

答えて

0

私は2日かかりました。今日私は最終的に私のプログラムがなぜ初めて動作しなかったのかを知りました。 Android 6.0からは、android.permission.ACCESS_FINE_LOCATIONまたはandroid.permission.ACCESS_FINE_LOCATIONリモートBluetoothデバイスをスキャンする権限も必要です。また、ロケーションサービスのアクセス許可を有効にするには、[設定] - > [アプリ] - > yourApp - > [アクセス権]の順に移動する必要があります。または、プログラムでアクセス許可を要求することもできます。

+0

おい、あなたは私の日を救った! – psv

+0

私はそれが助けてうれしいです:) – Booo

関連する問題