简体   繁体   English

从另一个类在MediaPlayer上调用暂停-Android Java

[英]Calling pause on MediaPlayer from another class - Android java

I have a class named NowPlayingActivity and VideosActivity. 我有一个名为NowPlayingActivity和VideosActivity的类。 Both are handled by a TabHost. 两者都由TabHost处理。 At the start of the app, mediaplayer from NowPlayingActivity will play a song automatically. 在应用程序启动时,NowPlayingActivity中的mediaplayer将自动播放歌曲。 When I go to videos activity, there would be a list of videos available to play. 当我参加视频活动时,将有一个可供播放的视频列表。 What I want is to stop the song playing from NowPlayingActivity when I clicked an item from videosactivity so the song will stop at video play. 我想要的是当我单击videosactivity中的项目时停止从NowPlayingActivity播放歌曲,以便歌曲在视频播放时停止。

public void onItemClick(AdapterView parent, View v, int position, long id)
{
    NowPlayingActivity npa = new NowPlayingActivity();
    npa.pause();
    System.gc();
    videoColumnIndex = videoCursor.getColumnIndexOrThrow(
            MediaStore.Video.Media.DATA);
    videoCursor.moveToPosition(position);
    String filename = videoCursor.getString(videoColumnIndex);
    Log.i("FileName: ", filename);

    Intent intent = new Intent(Intent.ACTION_VIEW);
    Uri data = Uri.parse(filename);
    intent.setDataAndType(data, "video/*"); 
    startActivity(intent);
}

This is my code that starts and intent to play a selected video from the list, and play it on the gallery. 这是我的代码,旨在开始播放列表中选定的视频,然后在图库中播放。

I tried creating a method pause from the NowPlayingActivity then call it on item click from videos activity. 我尝试从NowPlayingActivity创建一个方法暂停,然后在视频活动中的项目点击上调用它。

public void pause(){

    if(mp.isPlaying()){
        if(mp!=null){
            mp.pause();
        }
    }
}

I don't know if this is possible but i can't think of any way but this. 我不知道这是否可能,但是除了这个我什么也想不出来。

EDIT: 编辑:

Logcat
07-14 06:18:32.526: E/AndroidRuntime(979): FATAL EXCEPTION: main
07-14 06:18:32.526: E/AndroidRuntime(979): java.lang.NullPointerException
07-14 06:18:32.526: E/AndroidRuntime(979):  at com.example.prismmediaplayer.NowPlayingActivity.pause(NowPlayingActivity.java:410)
07-14 06:18:32.526: E/AndroidRuntime(979):  at com.example.prismmediaplayer.VideosActivity$1.onItemClick(VideosActivity.java:59)
07-14 06:18:32.526: E/AndroidRuntime(979):  at android.widget.AdapterView.performItemClick(AdapterView.java:298)
07-14 06:18:32.526: E/AndroidRuntime(979):  at android.widget.AbsListView.performItemClick(AbsListView.java:1086)
07-14 06:18:32.526: E/AndroidRuntime(979):  at android.widget.AbsListView$PerformClick.run(AbsListView.java:2855)
07-14 06:18:32.526: E/AndroidRuntime(979):  at android.widget.AbsListView$1.run(AbsListView.java:3529)
07-14 06:18:32.526: E/AndroidRuntime(979):  at android.os.Handler.handleCallback(Handler.java:615)
07-14 06:18:32.526: E/AndroidRuntime(979):  at android.os.Handler.dispatchMessage(Handler.java:92)
07-14 06:18:32.526: E/AndroidRuntime(979):  at android.os.Looper.loop(Looper.java:137)
07-14 06:18:32.526: E/AndroidRuntime(979):  at android.app.ActivityThread.main(ActivityThread.java:4745)
07-14 06:18:32.526: E/AndroidRuntime(979):  at java.lang.reflect.Method.invokeNative(Native Method)
07-14 06:18:32.526: E/AndroidRuntime(979):  at java.lang.reflect.Method.invoke(Method.java:511)
07-14 06:18:32.526: E/AndroidRuntime(979):  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:786)
07-14 06:18:32.526: E/AndroidRuntime(979):  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:553)
07-14 06:18:32.526: E/AndroidRuntime(979):  at dalvik.system.NativeStart.main(Native Method)

Put the MediaPlayer in your host activity. 将MediaPlayer放入您的主机活动中。 Then you can call your actions from either NowPlayingActivity or VideosActivity 然后,您可以从NowPlayingActivityVideosActivity调用操作

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM