我想从资产中读取我的声音,这是一个可以猜测的游戏。 现在我的声音在原始文件夹中,现在我想从资产中读取它们。 我谷歌它,我也发现一些正常工作的代码,但我可以读取第一个声音。
看看我的代码:
这里我从原文中读到:
int sound_id = mContext.getResources().getIdentifier(SoundFile, "raw",
mContext.getPackageName());
soundPool.setOnLoadCompleteListener(new OnLoadCompleteListener() {
@Override
public void onLoadComplete(SoundPool soundPool, int sampleId, int status) {
loaded = true;
}
});
soundID = soundPool.load(this, sound_id, 1);
在这里我使用代码,但它只是播放我的第一个声音
private static void initiate() {
XmlPullParserFactory pullParserFactory;
try {
pullParserFactory = XmlPullParserFactory.newInstance();
XmlPullParser parser = pullParserFactory.newPullParser();
InputStream in_s = G.context.getAssets().open("temp.xml");
parser.setFeature(XmlPullParser.FEATURE_PROCESS_NAMESPACES, false);
parser.setInput(in_s, null);
routpic.parseXML(parser);
} catch (XmlPullParserException e) {
e.printStackTrace();
Log.i("EROR", "nabod");
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
Log.i("EROR", "nabod");
}
array_audio.clear();
for (int i = 0; i < routpic.names.size(); i++) {
array_audio.add(routpic.names.get(i));
Log.i("LOG2", "" + routpic.names.get(i));
}
}
private void play(int index) {
mediaPlayer.release();
index++;
index=soundID;
String s = "mp3/a" + index + ".mp3";
//Resources resources = getResources();
AssetFileDescriptor afd;
try {
afd = getAssets().openFd(s);
mediaPlayer = new MediaPlayer();
mediaPlayer.setDataSource(afd.getFileDescriptor(), afd.getStartOffset(), afd.getLength());
mediaPlayer.prepare();
mediaPlayer.start();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
和我的资产:
<mp3>
<name>1</name>
</mp3>
答案 0 :(得分:0)
我得到答案我取消了soundpool,我使用了madiapalayer。 通过这种方式,我从资产文件夹中读取了我的音乐。 我将我的音乐放在mp3文件夹中,如下所示:
AssetFileDescriptor afd;
try {
afd = getAssets().openFd("mp3/" + "a" + lvl + ".mp3");
mediaPlayer = new MediaPlayer();
mediaPlayer.setDataSource(afd.getFileDescriptor(), afd.getStartOffset(), afd.getLength());
mediaPlayer.prepare();
//mediaPlayer.start();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
之后,我轻松地开始我的媒体播放器。
答案 1 :(得分:-1)
变量
textview_Number.animate().setDuration(500).rotationBy(360f).setListener(object : Animator.AnimatorListener {
override fun onAnimationRepeat(animation: Animator?) {}
override fun onAnimationCancel(animation: Animator?) {}
override fun onAnimationStart(animation: Animator?) {}
override fun onAnimationEnd(animation: Animator?) {
button_randomize.isEnabled = true
}
})
}
将此代码放在onCreate您的活动或片段中
private SoundPool soundPool;
private AssetFileDescriptor afd;
从资产文件夹加载并播放mp3文件
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
AudioAttributes audioAttributes = new AudioAttributes.Builder()
.setUsage(AudioAttributes.USAGE_GAME)
.setContentType(AudioAttributes.CONTENT_TYPE_SONIFICATION)
.build();
soundPool = new SoundPool.Builder()
.setMaxStreams(1)
.setAudioAttributes(audioAttributes)
.build();
} else {
soundPool = new SoundPool(1, AudioManager.STREAM_MUSIC, 0);
}
soundPool.setOnLoadCompleteListener(new SoundPool.OnLoadCompleteListener() {
@Override
public void onLoadComplete(SoundPool soundPool, int sampleId, int status) {
soundPool.play(sampleId, 1.0f, 1.0f, 0, 0, 1.0f);
}
});
从原始目录加载并播放mp3文件
try {
afd = getResources().getAssets().openFd("mp3/ba.mp3");
}
catch (IOException e) {
e.printStackTrace();
}
soundPool.load(afd, 1);