アプリケーション全体でブルートゥースを有効にする必要がありますが、どうすればいいですか?アプリケーション全体でブルートゥースを有効にする方法
私が主なアクティビティを使用しているとき、コードは素晴らしいです。しかし、私が別のアクティビティに行き、BTブロードキャストを無効にすると、BTを有効にする信号が送られますが、その後は "onActivityResult"メソッドが呼び出されることはありません。
グローバルに必要なBTを書くにはどうしたらいいですか?私のアプリケーションのすべてのアクティビティ(および設定)。
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data)
{
switch (requestCode)
{
case Bluetooth.REQUEST_ENABLE_BLUETOOTH:
if (resultCode == RESULT_OK)
{
// some stuff here
}
else
{
// exitapp();
}
break;
}
}
受信機
protected final BroadcastReceiver mReceiver = new BroadcastReceiver()
{
@Override
public void onReceive(Context context, Intent intent)
{
if (intent.getAction().equals(BluetoothAdapter.ACTION_STATE_CHANGED))
{
final int state = intent.getIntExtra(BluetoothAdapter.EXTRA_STATE,
BluetoothAdapter.ERROR);
if(state == BluetoothAdapter.STATE_OFF)
{
startActivityForResult(new Intent(BluetoothAdapter.ACTION_REQUEST_ENABLE), Bluetooth.REQUEST_ENABLE_BLUETOOTH);
}
}
}
};
そしてもちろん
startReceiver(mReceiver); // onCreate()
stopReceiver(mReceiver); // onDestroy()
どうもありがとうございました。
更新:別のアクティビティに行くと、受信者は再び動作しません(おそらくonDestroy()で停止しています)?私は知らない、おそらく私はすべての活動にレシーバーを配置する必要がありますか?ああ、私はそれが本当でないことを願っています。
import android.app.Service;
import android.bluetooth.BluetoothAdapter;
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.content.IntentFilter;
import android.os.IBinder;
public class BluetoothService extends Service {
@Override
public IBinder onBind(Intent arg0) {
// TODO Auto-generated method stub
return null;
}
@Override
public void onCreate() {
super.onCreate();
IntentFilter intentFilter = new IntentFilter();
intentFilter.addAction(BluetoothAdapter.ACTION_STATE_CHANGED);
this.registerReceiver(bluetoothReceiver, intentFilter);
}
@Override
public void onDestroy() {
if (bluetoothReceiver != null) {
this.unregisterReceiver(bluetoothReceiver);
}
super.onDestroy();
}
public BroadcastReceiver bluetoothReceiver = new BroadcastReceiver()
{
@Override
public void onReceive(Context context, Intent intent)
{
if (intent.getAction().equals(BluetoothAdapter.ACTION_STATE_CHANGED))
{
final int state = intent.getIntExtra(BluetoothAdapter.EXTRA_STATE, BluetoothAdapter.ERROR);
Intent x = new Intent("btfilter");
intent.putExtra("state", state);
sendBroadcast(x);
}
}
};
}
MainActivityのonCreate
btintent= new Intent(this, BluetoothService.class);
startService(btintent);
registerReceiver(mServiceUpdatesReceiver, new IntentFilter("btfilter"));
MainActivity onDestroy()あなたがServiceを使用することを検討すべきである
unregisterReceiver(mServiceUpdatesReceiver);
受信機
private BroadcastReceiver mServiceUpdatesReceiver = new BroadcastReceiver() {
@Override
public void onReceive(Context context, Intent intent)
{
int state = intent.getIntExtra("state", -1);
if(state == BluetoothAdapter.STATE_OFF)
{
// enable request
}
}
};
ありがとうございます、私の質問を更新しました...私はおそらく間違って何かをしています、あなたはそれを見ることができますか?これは以前のバージョンのhahaのように動作しますが、違いはありません。 –
ちょうど1つの違いは、btは別のアクティビティでは要求されません。 –