こんにちは私はアンドロイドの新しいコーダーです。ローカルの.mp3ファイルを「再生」「一時停止」「停止」するプログラムがあります。このウェブサイトからソースをここで見つけました。
http://android-er.blogspot.com/2010/07/android-mediaplayer.html
だから私はコードを投稿し、実際にプレイを押してエラーが発生するまで、すべてがうまく機能しているようです。
エラーを読み込もうとしましたが、正確に何を言っているのか理解できませんか?
私のエラーはthis(logcat)です:
06-12 12:02:38.810: E/AndroidRuntime(4190): FATAL EXCEPTION: main
06-12 12:02:38.810: E/AndroidRuntime(4190): java.lang.NullPointerException
06-12 12:02:38.810: E/AndroidRuntime(4190):atcom.reg.ihigh.Cocaine$1.onClick(Cocaine.java:53)
06-12 12:02:38.810: E/AndroidRuntime(4190): at android.view.View.performClick(View.java:2485)
06-12 12:02:38.810: E/AndroidRuntime(4190): at android.view.View$PerformClick.run(View.java:9089)
06-12 12:02:38.810: E/AndroidRuntime(4190): at android.os.Handler.handleCallback(Handler.java:587)
06-12 12:02:38.810: E/AndroidRuntime(4190): at android.os.Handler.dispatchMessage(Handler.java:92)
06-12 12:02:38.810: E/AndroidRuntime(4190): at android.os.Looper.loop(Looper.java:123)
06-12 12:02:38.810: E/AndroidRuntime(4190): at android.app.ActivityThread.main(ActivityThread.java:3806)
06-12 12:02:38.810: E/AndroidRuntime(4190): at java.lang.reflect.Method.invokeNative(Native Method)
06-12 12:02:38.810: E/AndroidRuntime(4190): at java.lang.reflect.Method.invoke(Method.java:507)
06-12 12:02:38.810: E/AndroidRuntime(4190): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:839)
06-12 12:02:38.810: E/AndroidRuntime(4190): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:597)
06-12 12:02:38.810: E/AndroidRuntime(4190): at dalvik.system.NativeStart.main(Native Method)
クラス
package com.reg.ihigh;
import android.app.Activity;
import android.media.MediaPlayer;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.TextView;
public class Cocaine extends Activity {
MediaPlayer mediaPlayer;
Button buttonPlayPause, buttonQuit;
TextView textState;
private int stateMediaPlayer;
private final int stateMP_NotStarter = 0;
private final int stateMP_Playing = 1;
private final int stateMP_Pausing = 2;
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.drugg);
buttonPlayPause = (Button)findViewById(R.id.playButton);
buttonQuit = (Button)findViewById(R.id.quitButton);
textState = (TextView)findViewById(R.id.state);
buttonPlayPause.setOnClickListener(buttonPlayPauseOnClickListener);
buttonQuit.setOnClickListener(buttonQuitOnClickListener);
initMediaPlayer();
}
private void initMediaPlayer()
{
mediaPlayer = new MediaPlayer();
mediaPlayer = MediaPlayer.create(Cocaine.this, R.raw.cocaine);
stateMediaPlayer = stateMP_NotStarter;
textState.setText("- IDLE -");
}
Button.OnClickListener buttonPlayPauseOnClickListener
= new Button.OnClickListener(){
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
switch(stateMediaPlayer){
case stateMP_NotStarter:
mediaPlayer.start();
buttonPlayPause.setText("Pause");
textState.setText("- PLAYING -");
stateMediaPlayer = stateMP_Playing;
break;
case stateMP_Playing:
mediaPlayer.pause();
buttonPlayPause.setText("Play");
textState.setText("- PAUSING -");
stateMediaPlayer = stateMP_Pausing;
break;
case stateMP_Pausing:
mediaPlayer.start();
buttonPlayPause.setText("Pause");
textState.setText("- PLAYING -");
stateMediaPlayer = stateMP_Playing;
break;
}
}
};
Button.OnClickListener buttonQuitOnClickListener
= new Button.OnClickListener(){
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
mediaPlayer.stop();
mediaPlayer.release();
finish();
}
};
}
Xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
>
<TextView
android:layout_width="fill_parent"
android:layout_height="wrap_content"
/>
<Button
android:id="@+id/playButton"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="Play"/>
<Button
android:id="@+id/quitButton"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="Quit"/>
<TextView
android:id="@+id/state"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
/>
</LinearLayout>
編集修正:
元のmp3を圧縮するために変換したとき、rawフォルダーへのコピープロセスで破損した方法があります。だから私はコピーしたものを再圧縮してバムしました。すべてが機能します!ありがとう@MattWolfe