因此,我的原始文件夹中有一个mp3文件的集合。每个mp3都属于一个类别。从这个类别中,用户可以选择八个mp3s中的一个来播放。
例如: 1.mp3 2.mp3 3.mp3 4.mp3 5.mp3 6.mp3
mp3 (1-3)属于光滑爵士乐,mp3(3-6)属于另类摇滚。
在每个类中重复相同的方法,我宁愿在主活动中有一个方法,可以从每个类调用。
MediaPlayer mp3;
public void musicPlayer(//Here is where I want to have a variable x){
mp3 = MediaPlayer.create(this, R.raw.//Here is where variable x goes);
PhoneStateListener phoneStateListener = new PhoneStateListener() {
@Override
public void onCallStateChanged(int state, String incomingNumber) {
if (state == TelephonyManager.CALL_STATE_RINGING) {
mp3.pause();
} else if(state == TelephonyManager.CALL_STATE_IDLE) {
mp3.start();
} else if(state == TelephonyManager.CALL_STATE_OFFHOOK) {
mp3.pause();
}
super.onCallStateChanged(state, incomingNumber);
}
};
TelephonyManager mgr = (TelephonyManager) getSystemService(TELEPHONY_SERVICE);
if(mgr != null) {
mgr.listen(phoneStateListener, PhoneStateListener.LISTEN_CALL_STATE);
}当我从一个单独的类调用方法musicPlayer时,我想实例化变量x。
发布于 2017-01-23 00:07:47
我看到了两种方法,这可以做到非常少的努力,特别是因为你只需要8个可能的MP3文件。
而且,由于只有8种可能性是可能的,而且所有可能都驻留在R.raw目录中,因此控制该方法中的内容并不是一件可怕的事情。
我希望这能帮到你。
发布于 2017-01-23 00:21:48
为了方法的可重用性,您应该创建一个单独的类MusicPlayer(),其中x作为类属性,musicPlayer作为类方法。然后,您可以在包含main方法的类中创建一个对象,例如myMusicPlayer类型的MusicPlayer,或者在需要调用musicPlayer方法的项目的任何其他类中。
例如:
MusicPlayer.java
public class MusicPlayer{
MediaPlayer mp3;
int x;
//ToDo: constructor(s)
//get and set methods for the Attributes of an object of type MusicPlayer (optional)
public void musicPlayer(){
//ToDo: your code
}
}MainClass.java
...
MusicPlayer myMusicPlayer = new MusicPlayer();
...
doSomethingWith(myMusicPlayer.x);
...
doSomethingWith(myMusicPlayer.mp3);祝好运!
https://stackoverflow.com/questions/41797472
复制相似问题