我知道这个问题已经被问了很多次,可能似乎是几个问题堆集,但我觉得这是相关的,重要的是许多开发人员; 我需要Service为我的Android游戏创建一个可以运行多个活动的背景音乐,这些活动在应用程序终止时结束,并在以下所有情况下暂停:
Activity有自己音乐的东西就开始了.(Activity完成时完成.这恰好是一项AndEngine活动.)onUserLeaveHint().另一个有用的链接TelephonyManager类似于此.ACTION_USER_PRESENT,这似乎是 非常 有问题的.以上是我需要的所有内容以及我拼凑在一起的信息.我目前的代码基本上类似于此.
我发现很奇怪,AndEngine他们的音乐没有这些问题,所以也许查看源代码可以帮助寻找答案的人.我正在使用Google Code的最新功能GLES1版本.
我已经看过以下链接以及创建好音乐Service:
我想解决方案Service:
BroadcastReceivers尽可能减少使用和Android Manifest添加/权限的最小化其他说明
提前感谢大家!祝你好运!
编辑 - 这是代码片段,随意改进或忽略:
媒体播放器包装
import android.content.SharedPreferences;
import android.media.MediaPlayer;
import android.preference.PreferenceManager;
import android.util.Log;
public class CarefulMediaPlayer {
final SharedPreferences sp;
final MediaPlayer mp;
private …Run Code Online (Sandbox Code Playgroud) 我正在创建一个使用广播接收器的类.我希望在解锁手机时收到广播.但是有一些问题.请帮帮我.
我的Manifest.xml是: -
<receiver android:name=".MyReciever">
<intent-filter>
<intent-filter>
<action android:name="android.intent.action.ACTION_USER_PRESENT" />
<action android:name="android.intent.action.ACTION_BOOT_COMPLETED" />
<action android:name="android.intent.action.ACTION_SCREEN_ON" />
</intent-filter>
</intent-filter>
</receiver>
Run Code Online (Sandbox Code Playgroud)
和我的广播接收班: -
public class MyReiever extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
Log.d("My Reciever","is intent null => " + (intent == null));
Log.d("My Reciever",intent.getAction()+"");
}
}
Run Code Online (Sandbox Code Playgroud)
虽然其他应用程序和服务正在接收"Screen_on"和"USer_Present"的广播,例如.WifiService.
我正在尝试让我的应用程序在打开屏幕时打印一些内容,但它不能像我预期的那样工作.
这是我在Manifest文件中的内容
<application android:icon="@drawable/icon" android:label="@string/app_name">
<activity ...>
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<receiver android:name="PhoneBroadcastReceiver" android:enabled="true">
<intent-filter>
<action android:name="android.intent.action.SCREEN_ON"></action>
</intent-filter>
</receiver>
</application>
Run Code Online (Sandbox Code Playgroud)
我的接收器看起来像
public class PhoneBroadcastReceiver extends BroadcastReceiver {
public PhoneBroadcastReceiver()
{
}
@Override
public void onReceive(Context _context, Intent _intent) {
// TODO Auto-generated method stub
String a = _intent.getAction();
MessageHandler.log("Received action: " + a); // just a wrapper for printing to a log
}
Run Code Online (Sandbox Code Playgroud)
}
但它没有打印到日志.我一直按下我的Android电源按钮,屏幕打开/关闭,但我的消息没有出现在日志中.我错过了什么?它看起来与我在网上找到的例子相同.