Cara mengaktifkan / menonaktifkan bluetooth secara terprogram di android

104

Saya ingin mengaktifkan / menonaktifkan bluetooth melalui program ini. Saya memiliki kode berikut.

BluetoothAdapter mBluetoothAdapter = BluetoothAdapter.getDefaultAdapter();    
if (!mBluetoothAdapter.isEnabled()) {
        Intent enableBtIntent = new Intent(BluetoothAdapter.ACTION_REQUEST_ENABLE);
        startActivityForResult(enableBtIntent, REQUEST_ENABLE_BT);

Tetapi kode ini tidak berfungsi di SDK 1.5. Bagaimana cara membuatnya bekerja?

pengguna458295
sumber
Bagaimana tidak bekerja? Apakah Anda mendapatkan kesalahan? Jika ya, apa kesalahannya?
Adam Driscoll
1
BluetoothAdapter menampilkan kesalahan di SDK 1.5
pengguna458295

Jawaban:

164

kode ini bekerja untuk saya ..

//Disable bluetooth
BluetoothAdapter mBluetoothAdapter = BluetoothAdapter.getDefaultAdapter();    
if (mBluetoothAdapter.isEnabled()) {
    mBluetoothAdapter.disable(); 
} 

Agar ini berfungsi, Anda harus memiliki izin berikut:

<uses-permission android:name="android.permission.BLUETOOTH"/>
<uses-permission android:name="android.permission.BLUETOOTH_ADMIN"/>
prijin
sumber
itu benar-benar berhasil untuk saya juga. metode sederhana untuk memutus bluetooth di perangkat android. terima kasih banyak sobat.
Amit Thaper
7
jika Anda menambahkan izin BLUETOOTH_ADMIN itu berfungsi tetapi jika tidak Anda perlu menggunakan startActivityForResult (enableBtIntent, 0); untuk mengaktifkan bluetooth Anda
Majid Golshadi
1
Terima kasih atas jawaban Anda yang bermanfaat +1. hanya saya ingin menambahkan bagi siapa yang tidak tahu cara mengaktifkannya: mBluetoothAdapter.enable ()
Chris Sim
97

Berikut adalah cara yang lebih kuat untuk melakukan ini, juga menangani nilai kembalian enable()\disable()metode:

public static boolean setBluetooth(boolean enable) {
    BluetoothAdapter bluetoothAdapter = BluetoothAdapter.getDefaultAdapter();
    boolean isEnabled = bluetoothAdapter.isEnabled();
    if (enable && !isEnabled) {
        return bluetoothAdapter.enable(); 
    }
    else if(!enable && isEnabled) {
        return bluetoothAdapter.disable();
    }
    // No need to change bluetooth state
    return true;
}

Dan tambahkan izin berikut ke dalam file manifes Anda:

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

Tapi ingat poin penting ini:

Ini adalah panggilan asinkron: ini akan segera kembali, dan klien harus mendengarkan ACTION_STATE_CHANGED agar diberi tahu tentang perubahan status adaptor selanjutnya. Jika panggilan ini mengembalikan nilai true, status adaptor akan segera bertransisi dari STATE_OFF ke STATE_TURNING_ON, dan beberapa saat kemudian beralih ke STATE_OFF atau STATE_ON. Jika panggilan ini kembali salah, maka ada masalah langsung yang akan mencegah adaptor dihidupkan - seperti mode Pesawat, atau adaptor sudah dihidupkan.

MEMPERBARUI:

Oke, jadi bagaimana cara menerapkan pendengar bluetooth ?:

private final BroadcastReceiver mReceiver = new BroadcastReceiver() {
    @Override
    public void onReceive(Context context, Intent intent) {
        final String action = intent.getAction();

        if (action.equals(BluetoothAdapter.ACTION_STATE_CHANGED)) {
            final int state = intent.getIntExtra(BluetoothAdapter.EXTRA_STATE,
                                                 BluetoothAdapter.ERROR);
            switch (state) {
            case BluetoothAdapter.STATE_OFF:
                // Bluetooth has been turned off;
                break;
            case BluetoothAdapter.STATE_TURNING_OFF:
                // Bluetooth is turning off;
                break;
            case BluetoothAdapter.STATE_ON:
                // Bluetooth is on
                break;
            case BluetoothAdapter.STATE_TURNING_ON:
                // Bluetooth is turning on
                break;
            }
        }
    }
};

Dan bagaimana cara mendaftar / membatalkan registrasi penerima? (Di Activitykelas Anda )

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

    // ...

    // Register for broadcasts on BluetoothAdapter state change
    IntentFilter filter = new IntentFilter(BluetoothAdapter.ACTION_STATE_CHANGED);
    registerReceiver(mReceiver, filter);
}

@Override
public void onStop() {
    super.onStop();

     // ...

    // Unregister broadcast listeners
    unregisterReceiver(mReceiver);
}
Caner
sumber
1
jika Anda menambahkan BLUETOOTH_ADMINizin itu berfungsi tetapi jika tidak Anda perlu menggunakan startActivityForResult(enableBtIntent, 0);untuk mengaktifkan bluetooth Anda
Majid Golshadi
1
info yang disorot dikutip dari dokumen BluetoothAdapter, khususnya untuk metode enable ().
Kevin Lee
hei, dokumen mengatakan bahwa Bluetooth should never be enabled without direct user consent. If you want to turn on Bluetooth in order to create a wireless connection, you should use the ACTION_REQUEST_ENABLE Intent, which will raise a dialog that requests user permission to turn on Bluetooth. The enable() method is provided only for applications that include a user interface for changing system settings, such as a "power manager" app.Apa artinya? Misalnya. Saya membuat aplikasi kecil dari kode Anda dan berhasil. Tetapi jika saya ingin mengunggah ke Play Store, itu tidak akan berhasil?
Hilal
@Hilal itu akan berhasil. Tetapi pengguna perlu memberikan persetujuan sebelum instalasi. Mereka akan melihat dialog seperti ini: pewinternet.org/2015/11/10/…
Caner
23

Untuk Mengaktifkan Bluetooth, Anda dapat menggunakan salah satu fungsi berikut:

 public void enableBT(View view){
    BluetoothAdapter mBluetoothAdapter = BluetoothAdapter.getDefaultAdapter();
    if (!mBluetoothAdapter.isEnabled()){
        Intent intentBtEnabled = new Intent(BluetoothAdapter.ACTION_REQUEST_ENABLE); 
        // The REQUEST_ENABLE_BT constant passed to startActivityForResult() is a locally defined integer (which must be greater than 0), that the system passes back to you in your onActivityResult() 
        // implementation as the requestCode parameter. 
        int REQUEST_ENABLE_BT = 1;
        startActivityForResult(intentBtEnabled, REQUEST_ENABLE_BT);
        }
  }

Fungsi kedua adalah:

public void enableBT(View view){
    BluetoothAdapter mBluetoothAdapter = BluetoothAdapter.getDefaultAdapter();
    if (!mBluetoothAdapter.isEnabled()){
        mBluetoothAdapter.enable();
    }
}

Perbedaannya adalah bahwa fungsi pertama membuat aplikasi meminta izin kepada pengguna untuk mengaktifkan Bluetooth atau menolak. Fungsi kedua membuat aplikasi mengaktifkan Bluetooth secara langsung.

Untuk Menonaktifkan Bluetooth gunakan fungsi berikut:

public void disableBT(View view){
    BluetoothAdapter mBluetoothAdapter = BluetoothAdapter.getDefaultAdapter();
    if (mBluetoothAdapter.isEnabled()){
        mBluetoothAdapter.disable();
    }
}

CATATAN / Fungsi pertama hanya membutuhkan izin berikut untuk didefinisikan dalam file AndroidManifest.xml:

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

Sedangkan fungsi kedua dan ketiga membutuhkan izin berikut:

<uses-permission android:name="android.permission.BLUETOOTH"/>
<uses-permission android:name="android.permission.BLUETOOTH_ADMIN"/>
Ahmed Alnabhan
sumber
saya pikir parameter (View view) tidak diperlukan
CitrusO2
6

Solusi prijin bekerja dengan sempurna untuk saya. Cukup adil untuk menyebutkan bahwa diperlukan dua izin tambahan:

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

Saat ini ditambahkan, mengaktifkan dan menonaktifkan bekerja dengan sempurna dengan adaptor bluetooth default.

Peter Osburg
sumber
4

Saya menggunakan kode di bawah ini untuk menonaktifkan BT saat aplikasi saya diluncurkan dan berfungsi dengan baik. Tidak yakin apakah ini cara yang benar untuk mengimplementasikannya karena google menyarankan untuk tidak menggunakan "bluetooth.disable ();" tanpa tindakan pengguna yang eksplisit untuk mematikan Bluetooth.

    BluetoothAdapter bluetooth = BluetoothAdapter.getDefaultAdapter();
    bluetooth.disable();

Saya hanya menggunakan izin di bawah ini.

<uses-permission android:name="android.permission.BLUETOOTH_ADMIN"/>
nik
sumber
2

Tambahkan izin berikut ke dalam file manifes Anda:

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

Aktifkan bluetooth gunakan ini

BluetoothAdapter mBluetoothAdapter = BluetoothAdapter.getDefaultAdapter();    
if (!mBluetoothAdapter.isEnabled()) {
    mBluetoothAdapter.enable(); 
}else{Toast.makeText(getApplicationContext(), "Bluetooth Al-Ready Enable", Toast.LENGTH_LONG).show();}

Nonaktifkan penggunaan bluetooth ini

BluetoothAdapter mBluetoothAdapter = BluetoothAdapter.getDefaultAdapter();    
if (mBluetoothAdapter.isEnabled()) {
    mBluetoothAdapter.disable(); 
}
Selim Raza
sumber
0

coba ini:

//this method to check bluetooth is enable or not: true if enable, false is not enable
public static boolean isBluetoothEnabled()
    {
        BluetoothAdapter mBluetoothAdapter = BluetoothAdapter.getDefaultAdapter();
        if (!mBluetoothAdapter.isEnabled()) {
            // Bluetooth is not enable :)
            return false;
        }
        else{
            return true;
        }

    }

//method to enable bluetooth
    public static void enableBluetooth(){
        BluetoothAdapter mBluetoothAdapter = BluetoothAdapter.getDefaultAdapter();
        if (!mBluetoothAdapter.isEnabled()) {
            mBluetoothAdapter.enable();
        }
    }

//method to disable bluetooth
    public static void disableBluetooth(){
        BluetoothAdapter mBluetoothAdapter = BluetoothAdapter.getDefaultAdapter();
        if (mBluetoothAdapter.isEnabled()) {
            mBluetoothAdapter.disable();
        }
    }

Tambahkan izin ini dalam manifes

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