gpt4 book ai didi

Android - 我如何使用额外物理按钮的事件,如 pressy

转载 作者:行者123 更新时间:2023-11-29 21:02:40 25 4
gpt4 key购买 nike

我想在我的应用中使用一个额外的物理按钮。它连接到耳机插头。我在网上搜索并没有找到具体的答案。也许我没有使用正确的搜索词?有可用的教程吗?当按下这样的按钮时会触发什么事件?原始的 pressy 和廉价的瓷器之间有什么区别(在编码上)吗?是否可以在 adk 模拟器中模拟这个东西?

我真的很想在我的应用程序中使用这个东西,但我不知道如何使用。我需要一些帮助才能开始有任何想法吗?

你的回答帮助我开始了。

现在我面临新的问题,因为我将尝试做的 toast 没有出现。按下按钮将仅使用手机上的三星音乐播放器播放和暂停音乐。

import android.content.BroadcastReceiver; 
import android.content.Context;
import android.content.Intent;
import android.view.KeyEvent;
import android.widget.Toast;

public class MediaButtonIntentReceiver extends BroadcastReceiver {

public MediaButtonIntentReceiver() {
super();
}

@Override
public void onReceive(Context context, Intent intent) {
String intentAction = intent.getAction();
Toast.makeText(context, "onRecieve triggered", Toast.LENGTH_SHORT).show();
if (!Intent.ACTION_MEDIA_BUTTON.equals(intentAction)) {
return;
}
KeyEvent event = (KeyEvent)intent.getParcelableExtra(Intent.EXTRA_KEY_EVENT);
if (event == null) {
return;
}

int action = event.getAction();
Toast.makeText(context, "Action lauchched", Toast.LENGTH_SHORT).show();
if (action == KeyEvent.ACTION_DOWN) {
// do something
Toast.makeText(context, "BUTTON PRESSED!", Toast.LENGTH_SHORT).show();
}
if (action == KeyEvent.KEYCODE_MEDIA_PLAY_PAUSE) {
// do something
Toast.makeText(context, "Play Pause pressed!", Toast.LENGTH_SHORT).show();
}
abortBroadcast();
}
}

所以似乎没有达到接收者代码。在我的 Activity 中有以下几行:

public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(ZaehlenActivity.this);
setContentView(R.layout.zaehlen);

IntentFilter filter = new IntentFilter(Intent.ACTION_MEDIA_BUTTON);
MediaButtonIntentReceiver r = new MediaButtonIntentReceiver();
registerReceiver(r, filter);

我是不是忘记了什么?我必须以某种方式禁用标准耳机识别吗?

最佳答案

我认为耳机按钮被认为是 MEDIA_BUTTONS 所以,你必须创建一个 BroadcastReceiver 来收听 android.intent.action.MEDIA_BUTTON 并制作一个测试语句来测试操作是否为 ACTION_DOWN ,这里有一套代码可能会有所帮助:

这是 BroadcastReceiver,您必须在 AndroidManifest.xml 中声明它,并将其作为 Intent-filter:android.intent.action.MEDIA_BUTTON

public class MediaButtonIntentReceiver extends BroadcastReceiver {

public MediaButtonIntentReceiver() {
super();
}

@Override
public void onReceive(Context context, Intent intent) {
String intentAction = intent.getAction();
if (!Intent.ACTION_MEDIA_BUTTON.equals(intentAction)) {
return;
}
KeyEvent event = (KeyEvent)intent.getParcelableExtra(Intent.EXTRA_KEY_EVENT);
if (event == null) {
return;
}
int action = event.getAction();
if (action == KeyEvent.ACTION_DOWN) {
// do something
Toast.makeText(context, "BUTTON PRESSED!", Toast.LENGTH_SHORT).show();
}
abortBroadcast();
}
}

这是一个 Activity,它监听 BroadcastReceiver,然后在点击其中一个按钮时制作一个 Toast:

public class mainActivity extends Activity {

/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);

IntentFilter filter = new IntentFilter(Intent.ACTION_MEDIA_BUTTON);
MediaButtonIntentReceiver r = new MediaButtonIntentReceiver();
registerReceiver(r, filter);

}
}

希望对您有所帮助!

关于Android - 我如何使用额外物理按钮的事件,如 pressy,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25546084/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com