如何识别音乐播放器运行或我的应用程序的音量变化?

时间:2013-12-03 07:20:15

标签: android broadcastreceiver

当点击音量按钮改变时,我正在使用广播接收器来检测音量变化。 在此基础上,我得到了卷this link,当卷的值为零时,我启动了MainActivity。 但是我的问题出现了,当音乐播放器运行意味着将音量键更改为零然后不想打开我的应用程序时,我不想打开我的应用程序的MianActivity。但如果音乐播放器没有运行,我想打开我的应用程序MainActivity。 怎么做,建议我谢谢。

这是我的Receiver类

public class LaunchReciever extends BroadcastReceiver {

    private Context context=null;
    private static final String TAG="LaunchReciever";
    private static final int SLEEP_TIME = 5000;
    int volumetrap=0;
    @Override
    public void onReceive(Context arg0, Intent intent) {
        context=arg0;
        Bundle extras = intent.getExtras();
        if (extras != null) {
            int volume=(Integer) extras.get("android.media.EXTRA_VOLUME_STREAM_VALUE");
            Toast.makeText(arg0, "Receiver call & volume is:" +volume, Toast.LENGTH_SHORT).show();
            if(volume==0 || volume==7)
            {
                new Handler().postDelayed(new Runnable() {
                    public void run() {

                        ActivityManager activityManager = (ActivityManager)context.getSystemService(Context.ACTIVITY_SERVICE);
                        List<ActivityManager.RunningTaskInfo> appProcesses = activityManager.getRunningTasks(1);
                        String packagename=appProcesses.get(0).topActivity.getPackageName();

                        if(!packagename.equalsIgnoreCase("package name"))
                        {
                        Intent intent=new Intent(context, MainActivity.class);
                        intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK|Intent.FLAG_ACTIVITY_CLEAR_TOP);
                        context.startActivity(intent);

                        }
                        else{
                            Toast.makeText(context, "Already foreground", Toast.LENGTH_SHORT).show();
                        }

                    }
                }, SLEEP_TIME);
            }

        }
    }

0 个答案:

没有答案