相关疑难解决方法(0)

MediaButtonIntentReceiver无法在Android 4.0+中运行

目标是拦截来自耳机的广播以及最终的蓝牙,以响应来自耳机的不同类型的点击以改变媒体播放器.此解决方案适用于ICS之前的所有版本.这是我尝试过的一些代码和事情:

....
private BroadcastReceiver mediaButtonReceiver = new MediaButtonIntentReceiver();
....
public void onCreate() {
    ...
    IntentFilter mediaFilter = new IntentFilter(Intent.ACTION_MEDIA_BUTTON);
    mediaFilter.setPriority(2147483647); // this is bad...I know
    this.registerReceiver(mediaButtonReceiver, mediaFilter);
    ...
}

public class MediaButtonIntentReceiver extends BroadcastReceiver {

    private KeyEvent event;

    public MediaButtonIntentReceiver() {
        super();
    }

    @Override
    public void onReceive(Context context, Intent intent) {
        String intentAction = intent.getAction();
        if (!Intent.ACTION_MEDIA_BUTTON.equals(intentAction)) {
            return;
        }
        event = (KeyEvent)intent.getParcelableExtra(Intent.EXTRA_KEY_EVENT);
        if (event == null) {
            return;
        }
        try {
            int action = event.getAction();

            switch(action) {

                case KeyEvent.ACTION_UP …
Run Code Online (Sandbox Code Playgroud)

android media-player android-intent android-4.0-ice-cream-sandwich

11
推荐指数
1
解决办法
9049
查看次数

使用本地服务更新活动中的Textview

我有一个活动与R.id.eventDistance和R.id.eventTime显示基于当前位置的距离和旅行时间.我使用我的位置服务类每30秒计算一次这些值.

我的问题是:如何在Activity中更新TextView?我已经尝试查找问题并找到了一些可能的解决方案,例如使用BroadcastReceiver并在onReceive()方法中调用TextView.setText().我不确定这是怎么做的.我应该像这样传入Activity类:

public class MyReceiver extends BroadcastReceiver {

@Override
public void onReceive(Context context, Intent intent) {
    Intent i = new Intent(context, HomeActivity.class);
   }
} 
Run Code Online (Sandbox Code Playgroud)

我不知道在那之后该怎么做.任何帮助表示赞赏.

service android textview

6
推荐指数
1
解决办法
6952
查看次数

将参数传递给BroadcastReceiver

我正在尝试将一个int值从我的Service传递给CallReceiver类,不幸的是CallReceiver.value总是等于0,即使在设置了另一个值之后也是如此.当我试图将它作为参数传递给构造函数时,情况完全相同,因此使用从service调用的setter方法.真的没有办法传递任何数据吗?

服务:

SharedPreferences settings = getSharedPreferences("SETTINGS", 0);
    int value = settings.getInt("value1", 0); // here the correct value is present, not 0.
    CallReceiver mCallReceiver = new CallReceiver();
    CallReceiver.value = value;  
Run Code Online (Sandbox Code Playgroud)

接收器:

public class CallReceiver extends BroadcastReceiver  {

public int value;

public CallReceiver(int value)  {
    this.value = value;
}

public CallReceiver()   {

}


@Override
public void onReceive(Context context, Intent intent) {


            Log.v("value", String.valueOf(value)); // here "value" = 0.


        }

     }
Run Code Online (Sandbox Code Playgroud)

variables android broadcastreceiver

5
推荐指数
1
解决办法
1万
查看次数

如何在清单中注册 *inner* MEDIA_BUTTON BroadcastReceiver?

设法让我的耳机按钮在按下时被我的应用程序识别,但其中一个按钮需要调用 MyCustomActivity 中的方法。问题是 onReceive 的第一个参数是一个无法转换为 Activity 的上下文,因此我被迫将 BroadcastReceiver 实现为 MyCustomActivity 中的内部类。

到目前为止一切顺利,但如何在清单中注册这个内部 MediaButtonEventReceiver?

对于独立类,这很简单:

<receiver android:name=".RemoteControlReceiver">
    <intent-filter>
        <action android:name="android.intent.action.MEDIA_BUTTON" />
    </intent-filter>
</receiver>
Run Code Online (Sandbox Code Playgroud)

对 MyCustomActivity 的 mReceiver 执行相同操作的技巧/语法是什么?

  private BroadcastReceiver mReceiver = new BroadcastReceiver() {
    @Override
    public void onReceive(Context ctx, Intent intent) {
         // ...
        }
  }
Run Code Online (Sandbox Code Playgroud)

android broadcastreceiver android-audiomanager

3
推荐指数
1
解决办法
1603
查看次数