簡體   English   中英

在Android應用中播放媒體播放器

[英]Playing Media player in Android app

我正在創建一個帶有開始,暫停,停止按鈕的媒體播放器。 啟動和停止按鈕可以正常工作,問題出在暫停按鈕上。

當沒有音頻文件正在播放時(也根本沒有暫停任何音頻),如果我單擊暫停按鈕,則會拋出此錯誤消息:

不幸的是,應用程序已停止

問題是什么?

public class activity_12 extends Activity {

    MediaPlayer sound;
    int paused;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_12);
    }
    public void Play(View view) {
        if(sound==null) {
            sound=MediaPlayer.create(this,R.raw.fil);
            sound.start();
        }else if(!sound.isPlaying()) {
            sound.seekTo(paused);
            sound.start();
        }
    }
    public void Pause(View view) {
        sound.pause();
        paused=sound.getCurrentPosition();
    }
    public void Stop(View view) {
        sound.release();
        sound=null;
    }
}

您正面臨問題,因為您沒有正確聲明功能。請檢查以下代碼:

像這樣定義您的XML:

<RelativeLayout xmlns:androclass="http://schemas.android.com/apk/res/android"  
    xmlns:tools="http://schemas.android.com/tools"  
    android:layout_width="match_parent"  
    android:layout_height="match_parent"  
    android:paddingBottom="@dimen/activity_vertical_margin"  
    android:paddingLeft="@dimen/activity_horizontal_margin"  
    android:paddingRight="@dimen/activity_horizontal_margin"  
    android:paddingTop="@dimen/activity_vertical_margin"  
    tools:context=".MainActivity" >  
  <Button  
        android:id="@+id/button1"  
        style="?android:attr/buttonStyleSmall"  
        android:layout_width="wrap_content"  
        android:layout_height="wrap_content"  
        android:layout_alignLeft="@+id/textView1"  
        android:layout_below="@+id/textView1"  
        android:layout_marginTop="48dp"  
        android:text="start" />  

    <Button  
        android:id="@+id/button2"  
        style="?android:attr/buttonStyleSmall"  
        android:layout_width="wrap_content"  
        android:layout_height="wrap_content"  
        android:layout_alignTop="@+id/button1"  
        android:layout_toRightOf="@+id/button1"  
        android:text="pause" />  

    <Button  
        android:id="@+id/button3"  
        style="?android:attr/buttonStyleSmall"  
        android:layout_width="wrap_content"  
        android:layout_height="wrap_content"  
        android:layout_alignTop="@+id/button2"  
        android:layout_toRightOf="@+id/button2"  
        android:text="stop" />  

</RelativeLayout>

您應該這樣定義您的活動:

import android.media.MediaPlayer;  
import android.os.Bundle;  
import android.os.Environment;  
import android.app.Activity;  
import android.view.Menu;  
import android.view.View;  
import android.view.View.OnClickListener;  
import android.widget.Button;  

public class MainActivity extends Activity {  
    Button start,pause,stop;  
    MediaPlayer mediaPlayer;  
    @Override  
    protected void onCreate(Bundle savedInstanceState) {  
        super.onCreate(savedInstanceState);  
        setContentView(R.layout.activity_main);  

        start=(Button)findViewById(R.id.button1);  
        pause=(Button)findViewById(R.id.button2);  
        stop=(Button)findViewById(R.id.button3);  
        //creating media player  
        mediaPlayer= new MediaPlayer();



        start.setOnClickListener(new OnClickListener() {  
            @Override  
            public void onClick(View v) {  
                mediaPlayer.start();  
            }  
        });  
        pause.setOnClickListener(new OnClickListener() {  
            @Override  
            public void onClick(View v) {  
                mediaPlayer.pause();  
            }  
        });  
        stop.setOnClickListener(new OnClickListener() {  
            @Override  
            public void onClick(View v) {  
                mediaPlayer.stop();  
            }  
        });  
    }  
}  

作為參考,MediaPlayer的狀態非常特殊。 如果您在錯誤的時間調用了一個狀態檢查函數,例如isPlaying() ,或者在錯誤的時間調用了.pause() ,它將自動轉換為錯誤狀態。 您需要自己密切跟蹤狀態。

查看MediaPlayer文檔,尤其是狀態圖

對於暫停,它在調用pause()函數時說明了其相關狀態:

在有效狀態下成功調用此方法會將對象轉移到“暫停”狀態。 在無效狀態下調用此方法會將對象轉移到錯誤狀態。

MediaPlayer的錯誤狀態會引發崩潰。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM