Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/204.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 如何在媒体播放器中添加通知代码?_Android_Android Mediaplayer - Fatal编程技术网

Android 如何在媒体播放器中添加通知代码?

Android 如何在媒体播放器中添加通知代码?,android,android-mediaplayer,Android,Android Mediaplayer,当我在后台播放歌曲时,我希望媒体播放器上有通知 例如播放音乐、音乐播放器 公共类MainActivity扩展了PreparedListener上的活动实现, MediaController.MediaPlayerControl{ private static final String TAG = "AudioPlayer"; ListView mListView; private MediaPlayer mediaPlayer; private MediaController mediaCont

当我在后台播放歌曲时,我希望媒体播放器上有通知 例如播放音乐、音乐播放器

公共类MainActivity扩展了PreparedListener上的活动实现, MediaController.MediaPlayerControl{

private static final String TAG = "AudioPlayer";
ListView mListView;
private MediaPlayer mediaPlayer;
private MediaController mediaController;
ArrayList<Song> songList;
private Handler handler = new Handler();
public static int position = 0;


Intent songIntent = new Intent (android.content.Intent.ACTION_SEND);


@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    mediaPlayer = new MediaPlayer();
    mediaPlayer.setOnPreparedListener(this);
    mediaController = new MediaController(this);
    mediaController.setPrevNextListeners(new View.OnClickListener() {

        @Override
        public void onClick(View v) {

            // for next item

            if (position != songList.size() - 1) {
                position++;
            } else {
                position = 0;
            }

            playSong(songList.get(position).getPath());

        }
    }, new View.OnClickListener() {
        public void onClick(View v) {

            // for previous item

            if (position != 0) {
                position--;
            } else {
                position = songList.size() - 1;
            }

            playSong(songList.get(position).getPath());
        }
    });

    songList = new ArrayList<Song>();

    scanDirectory(new File(Environment.getExternalStorageDirectory()
            .getPath()));

    mListView = (ListView) findViewById(R.id.listView1);
    mListView.setAdapter(new ArrayAdapter<Song>(this,
            android.R.layout.simple_list_item_1, songList));
    mListView.setOnItemClickListener(new OnItemClickListener() {

        @Override
        public void onItemClick(AdapterView<?> parent, View view,
                int position, long id) {

            MainActivity.position = position;


            Song song = (Song) parent.getItemAtPosition(position);

            playSong(song.getPath());
        }
    });
}

public void playSong(String path) {

    mediaPlayer.reset();

    try {
        mediaPlayer.setDataSource(path);
        mediaPlayer.prepare();
    } catch (IllegalArgumentException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    } catch (SecurityException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    } catch (IllegalStateException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    } catch (IOException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }
    mediaPlayer.start();
}

@Override
public boolean onTouchEvent(MotionEvent event) {

    mediaController.show();
    return false;
}



public void start() {
    mediaPlayer.start();
}

public void pause() {
    mediaPlayer.pause();
}

public int getDuration() {
    return mediaPlayer.getDuration();
}

public int getCurrentPosition() {
    return mediaPlayer.getCurrentPosition();
}

public void seekTo(int i) {
    mediaPlayer.seekTo(i);
}

public boolean isPlaying() {
    return mediaPlayer.isPlaying();
}

public int getBufferPercentage() {
    return 0;
}

public boolean canPause() {
    return true;
}

public boolean canSeekBackward() {
    return true;
}

public boolean canSeekForward() {
    return true;
}

public void onPrepared(MediaPlayer mediaPlayer) {
    Log.d(TAG, "onPrepared");
    mediaController.setMediaPlayer(this);
    mediaController.setAnchorView(findViewById(R.id.main_audio_view));

    handler.post(new Runnable() {
        public void run() {
            mediaController.setEnabled(true);
            mediaController.show();
        }


    });
}

@Override
protected void onStop() {
    super.onStop();
    mediaController.hide(); 
mediaPlayer.stop(); 
mediaPlayer.release();
}

public void scanDirectory(File path) {

    File[] listFiles = path.listFiles();
    if (listFiles != null && listFiles.length > 0) {
        for (File file : listFiles) {
            if (file.isDirectory()) {
                scanDirectory(file);
            } else {
                addSongToList(file);
            }
        }
    }
}

public void addSongToList(File file) {

    if (file.getName().endsWith(".mp3"))
        songList.add(new Song(file.getName(), file.getPath()));
}

@Override
public int getAudioSessionId() {
    // TODO Auto-generated method stub
    return 0;
}
private static final String TAG=“AudioPlayer”;
列表视图;
私人媒体播放器;
专用媒体控制器;
ArrayList歌曲列表;
私有处理程序=新处理程序();
公共静态int位置=0;
Intent songIntent=新的Intent(android.content.Intent.ACTION\u SEND);
@凌驾
创建时受保护的void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
mediaPlayer=新的mediaPlayer();
mediaPlayer.setOnPreparedListener(这个);
mediaController=新的mediaController(此);
mediaController.setPrevNextListeners(新视图.OnClickListener(){
@凌驾
公共void onClick(视图v){
//下一项
if(position!=songList.size()-1){
位置++;
}否则{
位置=0;
}
playSong(songList.get(position.getPath());
}
},新视图。OnClickListener(){
公共void onClick(视图v){
//上一项
如果(位置!=0){
位置--;
}否则{
position=songList.size()-1;
}
playSong(songList.get(position.getPath());
}
});
songList=newarraylist();
扫描目录(新文件(Environment.getExternalStorageDirectory())
.getPath());
mListView=(ListView)findViewById(R.id.listView1);
mListView.setAdapter(新阵列适配器(此,
android.R.layout.simple_list_item_1,songList));
setOnItemClickListener(新的OnItemClickListener(){
@凌驾
public void onItemClick(AdapterView父级、视图、,
内部位置,长id){
MainActivity.position=位置;
宋宋=(宋)父项。getItemAtPosition(位置);
playSong(song.getPath());
}
});
}
公共无效播放歌曲(字符串路径){
mediaPlayer.reset();
试一试{
mediaPlayer.setDataSource(路径);
mediaPlayer.prepare();
}捕获(IllegalArgumentException e){
//TODO自动生成的捕捉块
e、 printStackTrace();
}捕获(安全异常e){
//TODO自动生成的捕捉块
e、 printStackTrace();
}捕获(非法状态){
//TODO自动生成的捕捉块
e、 printStackTrace();
}捕获(IOE异常){
//TODO自动生成的捕捉块
e、 printStackTrace();
}
mediaPlayer.start();
}
@凌驾
公共布尔onTouchEvent(运动事件){
mediaController.show();
返回false;
}
公开作废开始(){
mediaPlayer.start();
}
公共空间暂停(){
mediaPlayer.pause();
}
public int getDuration(){
返回mediaPlayer.getDuration();
}
public int getCurrentPosition(){
返回mediaPlayer.getCurrentPosition();
}
公共空间seekTo(内部一){
mediaPlayer.seekTo(一);
}
公共布尔值显示(){
返回mediaPlayer.isPlaying();
}
public int getBufferPercentage(){
返回0;
}
公共布尔canPause(){
返回true;
}
公共布尔值canSeekBackward(){
返回true;
}
公共布尔值canSeekForward(){
返回true;
}
已准备好公开作废(MediaPlayer MediaPlayer){
日志d(标签“准备就绪”);
mediaController.setMediaPlayer(此);
mediaController.setAnchorView(findViewById(R.id.main_audio_view));
handler.post(新的Runnable(){
公开募捐{
mediaController.setEnabled(true);
mediaController.show();
}
});
}
@凌驾
受保护的void onStop(){
super.onStop();
mediaController.hide();
mediaPlayer.stop();
mediaPlayer.release();
}
public void扫描目录(文件路径){
File[]listFiles=path.listFiles();
if(listFiles!=null&&listFiles.length>0){
用于(文件:listFiles){
if(file.isDirectory()){
董事会(档案);
}否则{
addSongToList(文件);
}
}
}
}
公共无效addSongToList(文件){
if(file.getName().endsWith(“.mp3”))
添加(新歌(file.getName(),file.getPath());
}
@凌驾
public int getAudioSessionId(){
//TODO自动生成的方法存根
返回0;
}
}

请给我一些建议


提前感谢

您创建了如下通知:

NotificationManager nm = (NotificationManager) context.getSystemService(Context.NOTIFICATION_SERVICE);
CharSequence title= "Playing";
CharSequence message = "My song";
PendingIntent contentIntent = PendingIntent.getActivity(context, 0, new Intent(), 0);

Notification notif = new Notification(R.drawable.disco, "Playing", System.currentTimeMillis());
notif.setLatestEventInfo(context, title, message, contentIntent);
nm.notify(1, notif);

要激活/取消激活通知,请阅读有关android活动生命周期的内容。另请阅读教程以获取通知。

请澄清问题。播放列表中的歌曲时,只需将歌曲的名称或id传递给通知,就可以了……;)当歌曲在后台播放时,它应该显示正在播放的歌曲和正在播放的歌曲,或者暂停播放您尝试过的代码