媒体播放器流无法在备注5

时间:2015-11-22 08:48:24

标签: android android-service android-mediaplayer audio-streaming galaxy

我目前正在为其中一位客户开发流式广播应用, 该应用程序几乎完成并正常工作。 (我说测试时工作正常)。 但问题是它根本不能在我的客户手机上工作。他有一张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);
}

}

1 个答案:

答案 0 :(得分:-1)

尝试清除应用程序上的缓存.....如果可能出现过热问题,也可以尝试在手机上快速重启。这些只是一些快速提示,但请访问fliptroniks.com以获取有关此问题的更多高级提示和修复程序