android - 媒体播放器流式传输不适用于 note 5

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

我目前正在为其中一位客户开发流媒体广播应用程序, 该应用程序即将完成并且运行良好。 (假设我测试时工作正常)。 但问题是它根本无法在我客户的手机上运行。他有一部 Galaxy note 5,他在美国(我在斯里兰卡)。我用许多手机测试了该应用程序(Galaxy note edge、HTC one M8、Galaxy s5、Galaxy s4、Oneplus one、Galaxy note 3、Huawei honor 3c、Huawei ascend)。它在所有这些手机上都能完美运行。但是当他测试它时它不起作用。他说启动 paltyer (OMG) 需要 30 多分钟。我通过前台服务调用了媒体播放器,这是我的媒体播放器服务代码。

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);
}

}

最佳答案

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

关于android - 媒体播放器流式传输不适用于 note 5,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33853065/

相关文章:

java - 为什么我的处理程序没有执行?

java - Android MediaPlayer 暂停

android - MediaSession 和 MediaSessionManager 是否向后兼容?

android - 是否有任何音频播放库可以与 getCurrentPostition() 和 seekTo() 一起正常工作?

android - 获取音频文件的持续时间

javascript - 在 Android 上从 Web 打印

android - 如何使应用程序的背景图像重复

java - 单独文件中的 Android 服务不起作用

android - 如何使服务即使在 sleep 模式下也能运行?

android - 为什么在 Android AIDL 接口(interface)中不可能有两个同名的方法