android-studio - 如何将音频添加到 Recycler View 项目
问题描述
我正在制作一个应用程序,它将显示不同类型的吉他,当用户点击特定类型吉他的图像(或文本)时,它将播放该类型的即兴演奏(例如,点击电吉他将播放电吉他即兴演奏)。这是我的代码:
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_guitar_basics);
recGuitarTypes();
}
private void recGuitarTypes(){
recGtypes = (RecyclerView) findViewById(R.id.viewGuitarTypes);
GuitarTypesRecyclerViewAdapter adapter = new GuitarTypesRecyclerViewAdapter(this);
recGtypes.setAdapter(adapter);
recGtypes.setLayoutManager(new GridLayoutManager(this, 2));
ArrayList<Guitar> arrGuitar = new ArrayList<>();
arrGuitar.add(new Guitar("Nylon String Spanish", "https://inside-guitar.com/wp-content/uploads/2019/05/Savarez-Flamenco-Guitar-Strings.jpg"));
arrGuitar.add(new Guitar("Steel String Acoustic","https://hearthemusicplay.com/wp-content/uploads/2017/05/steelstringguitar-e1494992902529-1140x638.jpg"));
arrGuitar.add(new Guitar("Electric Guitar","https://cdn.mos.cms.futurecdn.net/papiVxAvWm3QaDAD8fSdqS-970-80.jpg.webp"));
adapter.setGuitars(arrGuitar);
}
我想检查代码是否有效,这就是为什么我尝试使用“原始”文件夹中的单个音频文件来测试它,该文件应用于 RecyclerView 中的所有项目。它没有。如果您想检查一下,这是代码:
recGtypes.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
MediaPlayer mediaPlayer = MediaPlayer.create(view.getContext(), R.raw.steel_string);
mediaPlayer.start();
}
});
提前感谢您的帮助。
解决方案
你可以试试下面的代码吗?
recGtypes.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
private MediaPlayer mediaPlayer = new MediaPlayer();
AssetFileDescriptor file = getResources().openRawResourceFd(R.raw.steel_string);
mediaPlayer.setDataSource(file.getFileDescriptor(), file.getStartOffset(), file.getLength());
file.close();
mediaPlayer.prepare();
mediaPlayer.start();
}
});
推荐阅读
- android - Android:使用 Google Vision API 在脸上绘制地标
- android - GetExternalStoragePublicDirectory Android 10+ 升级问题:尝试从外部应用程序(OfficeLens)创建的位图到我的应用程序中
- angular - 使用 Angular 路由守卫时:'Observable
' 不可分配给类型 > '可观察的 ' - node.js - 有没有办法检索发生在对象上的所有活动?Getstream.io
- scala - 如何使用 spark 在商店中找到独特的产品?
- javascript - 使基于 html 和 svg 的重叠元素响应点击事件
- raspberry-pi - 如何使用 I2C 从 EEPROM 后端
- javascript - 复杂的 reducer 逻辑(React、JavaScript)
- python - 我在一个数组中循环并打印第二个数组中的频率,for循环工作正常,但是当函数中的相同代码不起作用时
- python - 如何删除 0 天并仅在 pandas 的数据框中保留时间