简体   繁体   中英

Bluetooth Adapter not working on Android 4.0 (API 14-15)

I am new on Android and I am just trying to develop an app that turns on/off the bluetooth on the device. This code works perfectly on Android 4.2/4.3 (tested on physical devices); however it doesnt on Android 4.0/4.1 . Can anyone help me with this please?

import android.app.Activity;
import android.bluetooth.BluetoothAdapter;
import android.content.Context;
import android.content.Intent;
import android.media.AudioManager;
import android.net.wifi.WifiManager;
import android.os.Bundle;
import android.telephony.PhoneStateListener;
import android.telephony.TelephonyManager;
import android.widget.CompoundButton;
import android.widget.CompoundButton.OnCheckedChangeListener;
import android.widget.RadioButton;
import android.widget.RadioGroup;
import android.widget.SeekBar;
import android.widget.Switch;
import android.widget.TextView;
import android.view.Menu;

public class MainActivity extends Activity {

private static final int REQUEST_ENABLE_BT = 1;
private BluetoothAdapter bA;

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
}

public void onResume(){
    checkBluetooth();
    setBluetoothListener();
}

@Override
public boolean onCreateOptionsMenu(Menu menu) {
    // Inflate the menu; this adds items to the action bar if it is present.
    getMenuInflater().inflate(R.menu.main, menu);
    return true;
}


private void checkBluetooth(){
    bA = BluetoothAdapter.getDefaultAdapter();
    Switch blue = (Switch)findViewById(R.id.switch4);
    blue.setChecked(true);
    }

private void setBluetoothListener(){
    Switch sBlue = (Switch) findViewById(R.id.switch4);
    sBlue.setOnCheckedChangeListener(new OnCheckedChangeListener() {
        @Override
        public void onCheckedChanged(CompoundButton arg0, boolean arg1) {
             if (arg1) {
                    Intent enableBtIntent = new Intent(BluetoothAdapter.ACTION_REQUEST_ENABLE);
                    startActivityForResult(enableBtIntent, REQUEST_ENABLE_BT);   
                } else {
                    bA.disable();
                }
            }
    });
}

}

Try:

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    checkBluetooth();
    setBluetoothListener();
}


@Override
public void onResume(){
    super.onResume();
    checkBluetooth();
}

In your onCreate() method this is where it is advised to create and bind views and data. And leave your onResume just to check if anything variable has changed (ie bluetooth status).

Also is this what you were intending:

private void checkBluetooth(){
    bA = BluetoothAdapter.getDefaultAdapter();
    Switch blue = (Switch)findViewById(R.id.switch4);
    blue.setChecked(bA.isEnabled());
}

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM