2012-06-18 32 views
0

我正在嘗試製作一個小型鋼琴鍵盤,但在媒體播放器的管理和觸摸按鈕中發現了一些問題。 這是我到目前爲止已經編寫的代碼:如何在Android中將媒體播放器管理爲鋼琴鍵盤?

import android.app.Activity; 
import android.content.pm.ActivityInfo; 
import android.media.MediaPlayer; 
import android.os.Bundle; 
import android.view.View; 
import android.view.Window; 
import android.view.WindowManager; 
import android.view.View.OnClickListener; 
import android.widget.Button; 
public class KeyboardPianoActivity extends Activity { 

Button dooT,reT,miT,faT,solT,laT,siT,doodT,redT,fadT,soldT,ladT,doo1T,re1T,mi1T,fa1T,sol1T,la1T,si1T,doo1dT,re1dT,fa1dT,sol1dT,la1dT,doo2T; 

MediaPlayer m1; 
MediaPlayer m2; 
MediaPlayer m3; 
MediaPlayer m4; 
MediaPlayer m5; 
MediaPlayer m6; 
MediaPlayer m7,m8,m9,m10,m11,m12; 

@Override 
public void onCreate(Bundle savedInstanceState) { 
super.onCreate(savedInstanceState); 
requestWindowFeature(Window.FEATURE_NO_TITLE); 
    getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,WindowManager.LayoutParams.FLAG_FULLSCREEN); 
setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE); 
setContentView(R.layout.main); 

dooT = (Button) findViewById(R.id.button1); 
reT = (Button) findViewById(R.id.button2); 
miT = (Button) findViewById(R.id.button3); 
faT = (Button) findViewById(R.id.button4); 
solT = (Button) findViewById(R.id.button5); 
laT = (Button) findViewById(R.id.button6); 
siT = (Button) findViewById(R.id.button7); 


m1 = MediaPlayer.create(getBaseContext(), R.raw.do1); 
m2 = MediaPlayer.create(getBaseContext(), R.raw.re); 
m3 = MediaPlayer.create(getBaseContext(), R.raw.mi); 
m4 = MediaPlayer.create(getBaseContext(), R.raw.fa); 
m5 = MediaPlayer.create(getBaseContext(), R.raw.sol); 
m6 = MediaPlayer.create(getBaseContext(), R.raw.la); 
m7 = MediaPlayer.create(getBaseContext(), R.raw.si); 



dooT.setOnClickListener(new OnClickListener(){ 
public void onClick(View arg0) { 

m1.start(); 
} 
}); 

reT.setOnClickListener(new OnClickListener(){ 
public void onClick(View arg0) { 

m2.start(); 
} 
}); 

miT.setOnClickListener(new OnClickListener(){ 
public void onClick(View arg0) { 

m3.start(); 
} 
}); 

faT.setOnClickListener(new OnClickListener(){ 
public void onClick(View arg0) { 

m4.start(); 
} 
}); 

solT.setOnClickListener(new OnClickListener(){ 
public void onClick(View arg0) { 

m5.start(); 
} 
}); 
} 
} 

這是logcat的:

E/AndroidRuntime(29177): FATAL EXCEPTION: main 
E/AndroidRuntime(29177): java.lang.NullPointerException 
E/AndroidRuntime(29177): at  it.bisemanuDEV.piano.KeyboardPianoActivity$1.onClick(KeyboardPianoActivity.java:71) 
E/AndroidRuntime(29177): at android.view.View.performClick(View.java:2408) 
E/AndroidRuntime(29177): at android.view.View$PerformClick.run(View.java:8819) 
E/AndroidRuntime(29177): at android.os.Handler.handleCallback(Handler.java:603) 
E/AndroidRuntime(29177): at android.os.Handler.dispatchMessage(Handler.java:92) 
E/AndroidRuntime(29177): at android.os.Looper.loop(Looper.java:123) 
E/AndroidRuntime(29177): at android.app.ActivityThread.main(ActivityThread.java:4627) 
E/AndroidRuntime(29177): at java.lang.reflect.Method.invokeNative(Native Method) 
E/AndroidRuntime(29177): at java.lang.reflect.Method.invoke(Method.java:521) 
E/AndroidRuntime(29177): at  com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:868)  
E/AndroidRuntime(29177): at  com.android.internal.os.ZygoteInit.main(ZygoteInit.java:626) 
E/AndroidRuntime(29177): at dalvik.system.NativeStart.main(Native Method) 

我還是用的Android編程初學者,我想正確的管理按鈕的行爲以及媒體播放器來模擬鋼琴鍵盤的操作。 我希望你的一些建議。 感謝

回答

0

不要使用getBaseContext()創建MediaPlayer對象,請使用getApplicationContext()this,這取決於它需要多麼執着是。有關更多信息,請參閱this answer