检查安卓手机耳机是否插入

OMK*_*ATE 1 android

我只是想检查耳机是否已插入 Android 设备。

然后,当我按下按钮时,它应该检查耳机是否已插入。如果已插入,那么我会播放音频,否则我会显示一个提示以插入耳机,即我不会执行任何操作,直到耳机已插入。

Exp*_*ind 5

您可以使用BroadcastReceiver

  public class MainActivity extends AppCompatActivity {
    private MusicIntentReceiver myReceiver;
  boolean  isHeadphoneConnected;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
        setSupportActionBar(toolbar);

        MusicIntentReceiver myReceiver = new MusicIntentReceiver();
        IntentFilter filter = new IntentFilter(Intent.ACTION_HEADSET_PLUG);
        registerReceiver(myReceiver, filter);
        FloatingActionButton fab = (FloatingActionButton) findViewById(R.id.fab);
        fab.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
            if(isHeadphoneConnected)
                Toast.makeText(MainActivity.this,"Headset is plug in",Toast.LENGTH_LONG).show();
                else
                Toast.makeText(MainActivity.this,"Headset is not plug in",Toast.LENGTH_LONG).show();
            }
        });
    }
    private class MusicIntentReceiver extends BroadcastReceiver {
        @Override public void onReceive(Context context, Intent intent) {
            if (intent.getAction().equals(Intent.ACTION_HEADSET_PLUG)) {
                int state = intent.getIntExtra("state", -1);
                switch (state) {
                    case 0:
                        isHeadphoneConnected = false;

                    break;
                    case 1:
                        isHeadphoneConnected = true;
                        break;
                }
            }
        }
    }
}
Run Code Online (Sandbox Code Playgroud)