我目前正在为其中一位客户开发流式广播应用, 该应用程序几乎完成并正常工作。 (我说测试时工作正常)。 但问题是它根本不能在我的客户手机上工作。他有一张Galaxy音符5,他在美国,(我在斯里兰卡)。我用很多手机测试了应用程序,(Galaxy note edge,HTC one M8,Galaxy s5,Galaxy s4,Oneplus one,Galaxy note 3,华为荣誉3c,华为登陆)。它在所有这些手机上都很完美。但是在测试时它无法正常工作。他说启动paltyer(OMG)需要30多分钟。我通过前台服务调用了Media Player,这是我的媒体播放器服务代码。
public class RadioService extends Service implements MediaPlayer.OnBufferingUpdateListener,MediaPlayer.OnErrorListener {
public static final String ACTION_PLAY = "com.example.action.PLAY";
static MediaPlayer mMediaPlayer = null;
public static ChannelDetails channelDetails;
public static int playState =0;
public static boolean isRunning;
public void initMedeaPlayer(){
Log.d("RadioService", "initMediaPlayer");
mMediaPlayer = new MediaPlayer();
mMediaPlayer.reset();
}
@Override
public int onStartCommand(Intent intent, int flags, int startId) {
if (intent.getAction().equals(ACTION_PLAY) && intent.getExtras().getSerializable("channelDetails")!=null) {
Log.d("RadioService", "OnStartCommand");
try{
channelDetails = (ChannelDetails)intent.getExtras().getSerializable("channelDetails");
initMedeaPlayer();
playMusic(null);
foregroundService();
isRunning = true;
}catch(Exception e){
e.printStackTrace();
}
}
return super.onStartCommand(intent, flags, startId);
}
public static void playMusic(ChannelDetails cn) {
try{
if(cn!=null){
channelDetails = cn;
mMediaPlayer.reset();
}else{
}
mMediaPlayer.setAudioStreamType(AudioManager.STREAM_MUSIC);
mMediaPlayer.setDataSource(channelDetails.getUrl());
mMediaPlayer.prepareAsync();
mMediaPlayer.setOnPreparedListener(new MediaPlayer.OnPreparedListener() {
@Override
public void onPrepared(MediaPlayer mp) {
playState = 1;
Log.d("RadioService", "OnPrepared");
mp.start();
}
});
}catch(Exception e){
e.printStackTrace();
}
}
public static void pauseMusic() {
try{
mMediaPlayer.pause();
playState=2;
}catch(Exception e){
e.printStackTrace();
}
}
public static void simplePlayMusic() {
try{
mMediaPlayer.start();
playState=1;
}catch(Exception e){
e.printStackTrace();
}
}
@Override
public void onCreate() {
super.onCreate();
Log.d("RadioService", "OnCreate");
}
@Override
public void onDestroy() {
super.onDestroy();
mMediaPlayer.stop();
mMediaPlayer.release();
mMediaPlayer=null;
isRunning = false;
Log.d("RadioService", "Destroyed");
}
@Override
public void onBufferingUpdate(MediaPlayer mp, int percent) {
}
@Override
public boolean onError(MediaPlayer mp, int what, int extra) {
return false;
}
@Nullable
@Override
public IBinder onBind(Intent intent) {
return null;
}
public void foregroundService(){
PendingIntent pi = PendingIntent.getActivity(getApplicationContext(), 0, new Intent(getApplicationContext(), MainPage.class), PendingIntent.FLAG_UPDATE_CURRENT);
Notification notification = new Notification.Builder(getApplicationContext())
.setTicker("Radio.lk")
.setContentTitle(channelDetails.getChannelName())
.setContentText("Online Streaming")
.setSmallIcon(R.mipmap.ic_launcher)
.addAction(R.mipmap.play, "Play", pi)
.addAction(R.mipmap.pause, "Pause", pi)
.addAction(R.mipmap.stop, "Stop", pi)
.setContentIntent(pi).getNotification();
notification.flags |= Notification.FLAG_ONGOING_EVENT;
NotificationManager nm = (NotificationManager)getSystemService(NOTIFICATION_SERVICE);
nm.notify(550,notification);
startForeground(550, notification);
}
}
答案 0 :(得分:-1)
尝试清除应用程序上的缓存.....如果可能出现过热问题,也可以尝试在手机上快速重启。这些只是一些快速提示,但请访问fliptroniks.com以获取有关此问题的更多高级提示和修复程序