【发布时间】:2019-05-23 12:06:38
【问题描述】:
我正在尝试制作一个类似飞鸟的游戏。但是,我一直在努力寻找一种在触摸屏幕时播放流行声音的方法。
我希望它在每次触摸屏幕时播放声音。我是 Android 和 Android Studio 的新手,我对 Java 有非常基本的了解。如您所见,我是新手。
我尝试过制作MediaPlayer,但我不知道如何让它在触摸屏幕时播放。
【问题讨论】:
-
你看过docs一次吗?
我正在尝试制作一个类似飞鸟的游戏。但是,我一直在努力寻找一种在触摸屏幕时播放流行声音的方法。
我希望它在每次触摸屏幕时播放声音。我是 Android 和 Android Studio 的新手,我对 Java 有非常基本的了解。如您所见,我是新手。
我尝试过制作MediaPlayer,但我不知道如何让它在触摸屏幕时播放。
【问题讨论】:
将SoundPool 与OnTouchListener 结合使用。在您的 onTouch(..) 方法中,您只需执行 SoundPool.play(YOURAUDIOFILE, 1, 1, 1, 0, 1);
例如:
在your_app/res/ 下创建一个名为 raw 的文件夹。然后将您的铃声粘贴到此文件夹中,例如your_app/res/ringtone.mp3。现在使用以下代码:
SoundPool soundPool = new SoundPool(5, AudioManager.STREAM_MUSIC, 0);
// soundId for reuse later on
int soundId = soundPool.load(context, R.raw.ringtone, 1);
soundPool.play(soundId, 1, 1, 0, 0, 1);
使用后务必释放 SoundPool 资源:
soundPool.release();
soundPool = null;
【讨论】:
您好,欢迎来到 Stackoverflow
要检测触摸事件首先你必须创建一个 TouchWrapper 类,你可以尝试更多的事件,但我相信这会对你有所帮助,只需将 println 替换为你想要播放的声音
class TouchableWrapper(context: Context) : FrameLayout(context) {
override fun dispatchTouchEvent(event: MotionEvent): Boolean {
when (event.action) {
MotionEvent.ACTION_DOWN -> println("Moved")
MotionEvent.ACTION_SCROLL -> println("Scrolled")
}
return super.dispatchTouchEvent(event)
}
}
当你创建它时,在你的布局文件中,将整个视图包装在一个 FrameLayout 中
<FrameLayout
android:id="@+id/frameMap"
android:layout_width="match_parent"
android:layout_height="match_parent"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintBottom_toTopOf="parent">
<fragment
android:id="@+id/map"
android:name="com.google.android.gms.maps.SupportMapFragment"
android:layout_width="match_parent"
android:layout_height="match_parent"/>
</FrameLayout>
最后在你的课堂上,发送这个
var mTouchView: TouchableWrapper? = null
override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle?): View? {
val frameLayout = FrameLayout(context)
Fonty.Companion.setFonts(container)
populateViewForOrientation(inflater, frameLayout)
mTouchView = TouchableWrapper(this.context!!)
mTouchView!!.addView(frameLayout)
return mTouchView
}
【讨论】: