Java 我正在创建一个播放原始文件的方法,但我需要从其他类访问该方法
因此,我的原始文件夹中有一组mp3文件。每个mp3都属于一个类别。从该类别中,用户可以从八个MP3中选择一个播放 例如: 1.mp3 2.mp3 3.mp3 4.mp3 5.mp3 6.mp3 mp3 1-3属于平滑爵士乐的范畴 而mp33-6属于替代岩 在每个类中重复相同的方法,我希望在主活动中有一个方法,我可以从每个类中调用它Java 我正在创建一个播放原始文件的方法,但我需要从其他类访问该方法,java,android,Java,Android,因此,我的原始文件夹中有一组mp3文件。每个mp3都属于一个类别。从该类别中,用户可以从八个MP3中选择一个播放 例如: 1.mp3 2.mp3 3.mp3 4.mp3 5.mp3 6.mp3 mp3 1-3属于平滑爵士乐的范畴 而mp33-6属于替代岩 在每个类中重复相同的方法,我希望在主活动中有一个方法,我可以从每个类中调用它 MediaPlayer mp3; public void musicPlayer(//Here is where I want to have a variable
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。我发现有两种方法可以轻松实现,特别是因为您只需要8个可能的MP3文件 变量x可以作为完全限定的“R”常量传入。这意味着调用方必须知道要传入的8项中的哪一项。事实上,如果您进行更改,以便用户能够以某种方式浏览R.raw中所有可能的候选对象,那么这仍然有效。但是,这意味着x变量并没有完全放在您放置它的地方。 变量x可能是R对象完全未知的东西,相反,您可以让解码器将其映射到R.raw.whatever常量。这也是可行的,因为只有几个可能的值。不幸的是,使用这种方法会降低灵活性。将来,如果要添加更多此类MP3,则需要进行代码更改扩展映射。同样,x变量也变得不同了。 此外,由于只有8种可能,并且所有可能都位于R.raw目录中,因此控制进入该方法的内容并不是一件可怕的事情
我希望这会有所帮助。对于方法的可重用性,您应该创建一个单独的类MusicLayer,其中x作为类属性,MusicLayer作为类方法。然后,您可以在包含main方法的类或需要调用MusicLayer方法的项目的任何其他类中创建一个对象,例如MusicLayer类型的MyMusicLayer e、 g MusicPlayer.java MainClass.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
}
}
...
MusicPlayer myMusicPlayer = new MusicPlayer();
...
doSomethingWith(myMusicPlayer.x);
...
doSomethingWith(myMusicPlayer.mp3);