2012-10-16 47 views
0

嗨有即时通讯使用http://code.google.com/p/aacdecoder-android/继承人我的主要活动完整代码:http://pastebin.com/FmaVgfNP但现在我想把该应用程序在后台,所以当人们按下按钮应用程序保持流音频我试着使用这样的:基本的应用程序有两个活动,一个列表视图,然后当我在一个项目点击自动播放的流了该站,但是当我按下返回键我流停止,我试图创建一个像这样的服务:设置Aac +播放器应用程序作为背景服务

public class MyService extends Service { 
    private static final String TAG = "AACPlayerActivity"; 


    @Override 
    public IBinder onBind(Intent intent) { 
     return null; 
    } 

    @Override 
    public void onCreate() { 
     Toast.makeText(this, "My Service Created", Toast.LENGTH_LONG).show(); 
     Log.d(TAG, "onCreate"); 

     //player = MediaPlayer.create(this, R.raw.braincandy); 
     //player.setLooping(false); // Set looping 
    } 

    @Override 
    public void onDestroy() { 
     Toast.makeText(this, "My Service Stopped", Toast.LENGTH_LONG).show(); 
     Log.d(TAG, "onDestroy"); 
     //player.stop(); 
    } 

    @Override 
    public void onStart(Intent intent, int startid) { 
     Toast.makeText(this, "My Service Started", Toast.LENGTH_LONG).show(); 
     Log.d(TAG, "onStart"); 
     //player.start(); 
    } 
} 

我试过这段代码来配置我的活动中的服务:

startService(new Intent(this, MyService.class)); 

在我的主要活动时aacplayer开始

然后停止时,我把这个:

stopService(new Intent(this, MyService.class)); 

我试图把MyService.class的OnCreate功能multiPlayer.playAsync(getUrl());所以音频流不断,当人们按下背部的流按钮。

但即时得到这个错误:

10-16 02:02:07.760: E/AndroidRuntime(25638): java.lang.RuntimeException: Unable to start service [email protected]b40ca0 with Intent { cmp=com.spoledge.aacplayer/.MyService }: java.lang.NullPointerException 

我不知道如果IM与逻辑IM约当我的球员流音频所以它一直在我可以注册行动作为服务不是很清楚正确的做背景。

非常感谢。

+1

使用你的方法检查我的编辑更新的解决方案 – speakingcode

回答

1

我在使用绑定服务之前完成了此操作。绑定更好,因为它允许您轻松实现暂停/停止/播放等。如果您的活动在后台中被系统杀死,当用户将其重新绑定到服务器时,它可以重新绑定到服务,启用播放控制。

我不知道,如果它是不好的做法,发布链接到自己的博客,但完整的源代码在这里http://www.speakingcode.com/2012/02/22/creating-a-streaming-audio-app-for-android-with-android-media-mediaplayer-android-media-audiomanager-and-android-app-service/

如果链接不是首选,我会在这里复制解决方案,但它是冗长:-)祝你好运,快乐的编码!

如果您想使用像yuo这样的已启动的服务,并且丧失了绑定服务的好处,那么您需要将MediaPlayer对象完全移入服务中并从活动中移出。您可以在onCreate()中实例化MediaPlayer,但在onStartCommand()方法中启动它(调用playAsync())会更好。

+0

不存在一个更短的方式兄弟?我的意思是如果你看看我所做的不太长,也许这也可以工作?短? – alexistkd

相关问题