【问题标题】:How to check if bluetooth is enabled programmatically?如何检查蓝牙是否以编程方式启用?
【发布时间】:2011-10-06 09:17:40
【问题描述】:

我想定期检查是否在任何 Android 设备上启用了蓝牙。有没有我可以使用 BroadcastReceiver 捕捉到的意图,还是有其他方法可以做到这一点?

【问题讨论】:

  • 只需查看此link 的蓝牙并按照所有步骤操作。我希望这会有所帮助。

标签: android bluetooth


【解决方案1】:

你去吧:

BluetoothAdapter mBluetoothAdapter = BluetoothAdapter.getDefaultAdapter();
if (mBluetoothAdapter == null) {
    // Device does not support Bluetooth
} else if (!mBluetoothAdapter.isEnabled()) {
    // Bluetooth is not enabled :)
} else {
    // Bluetooth is enabled 
}

uses-permission

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

【讨论】:

  • 如果这个检测只需要蓝牙权限,别忘了设置它不是必需的:
  • 检查蓝牙是否需要互联网?
  • 不,您不需要互联网来检查蓝牙状态。好吧,除了从这个 SO 帖子中获取代码 ;)
【解决方案2】:
public boolean isBluetoothEnabled()
    {
        BluetoothAdapter mBluetoothAdapter = BluetoothAdapter.getDefaultAdapter();
        return mBluetoothAdapter.isEnabled();

    }

清单文件中的权限:

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

【讨论】:

    【解决方案3】:

    这里我有其他选择作为这个问题的答案。

    首先在您的清单文件中添加以下行。

    <uses-feature android:name="android.hardware.BLUETOOTH" android:required="false"/>
    

    现在,如果您要检查蓝牙支持性,请使用以下代码。

    boolean isBluetoothSupported = getPackageManager().hasSystemFeature(PackageManager.FEATURE_BLUETOOTH);
    

    【讨论】:

    • 与“BluetoothAdapter.getDefaultAdapter()”有何不同?
    【解决方案4】:

    以编程方式检查蓝牙状态,打开或关闭:

        BluetoothAdapter btAdapter = ((Build.VERSION.SDK_INT > Build.VERSION_CODES.JELLY_BEAN_MR1)
               ?((BluetoothManager)mContext.getSystemService(Context.BLUETOOTH_SERVICE)).getAdapter()
                   :(BluetoothAdapter.getDefaultAdapter()));
    
           if(btAdapter==null){
            return;
           }
           if(btAdapter.getState()==BluetoothAdapter.STATE_ON){
                //Bluetooth is ON
           }
    

    你也可以听 Intent 动作:

    蓝牙适配器.ACTION_STATE_CHANGED

    【讨论】:

      【解决方案5】:

      使用可以使用

      BluetoothAdapter mBluetoothAdapter = BluetoothAdapter.getDefaultAdapter();
      

      用于检查 bt 已连接

      mBluetoothAdapter.getProfileConnectionState(BluetoothHeadset.HEADSET) == BluetoothHeadset.STATE_CONNECTED
      

      检查bt断开

      mBluetoothAdapter.getProfileConnectionState(BluetoothHeadset.HEADSET) == BluetoothHeadset.STATE_DISCONNECTED
      

      【讨论】:

        【解决方案6】:

        这就是我在@xjaphx 的回答的帮助下做到的,稍微简化的版本:

         private boolean getBlueToothOn(){
            BluetoothAdapter btAdapter = BluetoothAdapter.getDefaultAdapter(); 
              return btAdapter != null && btAdapter.isEnabled();
            }
        
         <uses-permission android:name="android.permission.BLUETOOTH" />
        

        【讨论】:

          【解决方案7】:

          首先允许 Manifest 的权限。

          <uses-permission android:name="android.permission.BLUETOOTH"/>
              <uses-permission android:name="android.permission.BLUETOOTH_ADMIN"/>
          
          public class MainActivity extends AppCompatActivity {
              
              private BluetoothAdapter mAdapter;
              private BluetoothDevice mDevice;
              private static final int ACCESS_REQUEST_CODE=100;
              private static final int REQUEST_ENABLE_CODE=1;
              private AudioRecord mRecord;
          
              @Override
              protected void onCreate(Bundle savedInstanceState) {
                  super.onCreate(savedInstanceState);
                  setContentView(R.layout.activity_main);
          
                  if (mAdapter!=null && mAdapter.isEnabled()){
          
                  }
                  else {
                      Intent enableIntent = new Intent(BluetoothAdapter.ACTION_REQUEST_ENABLE);
                      startActivityForResult(enableIntent, REQUEST_ENABLE_CODE);
                  }
              }
          
              @Override
              protected void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) {
                  super.onActivityResult(requestCode, resultCode, data);
                  if (requestCode==REQUEST_ENABLE_CODE){
                      if (resultCode==RESULT_OK){
                          println("Bluettoth Enabled");
                      }
                      else if (resultCode==RESULT_CANCELED){
                          println("Bluetooth Not permitted");
                          finish();
                      }
                  }
              }
          }
          

          【讨论】:

          • 要检查蓝牙是否打开或关闭,如果关闭将需要运行时权限来启用蓝牙,如果他们拒绝访问,它将关闭活动。
          • 如果这个帖子是this答案的更新,你应该使用edit链接而不是添加另一个帖子或在cmets中添加
          猜你喜欢
          • 2020-09-05
          • 1970-01-01
          • 1970-01-01
          • 2011-04-17
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2016-07-19
          • 1970-01-01
          相关资源
          最近更新 更多