android - 在Android onTouch上播放音频

标签 android audio mp3 media-player ontouch

我正在编写代码以播放声音并在用户触摸屏幕时以及在其手指抬起时振动和声音停止时振动。
播放音频所需的帮助...包括振动在内的所有功能都可以正常工作,但是无法播放音频...
音频文件名为tr.mp3

这是我的代码:

package dynamitechetan.trimmersimulator;

import android.content.Context;
import android.content.res.AssetFileDescriptor;
import android.media.MediaPlayer;
import android.os.Bundle;
import android.os.Vibrator;
import android.support.v7.app.AppCompatActivity;
import android.view.MotionEvent;
import android.view.View;
import android.widget.ImageView;

import java.io.IOException;

public class MainActivity extends AppCompatActivity {

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    final ImageView b = (ImageView) findViewById(R.id.bg1);
    final MediaPlayer mp = new MediaPlayer();
     b.setOnTouchListener(new View.OnTouchListener() {

         public boolean onTouch(View v, MotionEvent event) {
         Vibrator vb = (Vibrator) getSystemService(Context.VIBRATOR_SERVICE);
             if ((event.getAction() & MotionEvent.ACTION_MASK) == MotionEvent.ACTION_DOWN) {
                 vb.vibrate(1000 * 60 * 10);//10mins
                 b.setImageResource(R.drawable.img2);

 //                     mp.seekTo(0);
//
////                    mp.reset(); 
//                     mp.start();
                 try {
                     mp.reset();
                     AssetFileDescriptor afd;
                     afd = getAssets().openFd("tr.mp3");
                     mp.setDataSource(afd.getFileDescriptor(), afd.getStartOffset(), afd.getLength());
                     mp.prepare();
                     mp.start();
                 }  catch (IOException e) {
                     e.printStackTrace();
                 }


                 return true;
             }
             if ((event.getAction() & MotionEvent.ACTION_MASK) == MotionEvent.ACTION_UP) {
                 vb.cancel();

                     mp.stop();


                 b.setImageResource(R.drawable.img1);
                 return false;
             }
             return false;
         }

     });

}

}

最佳答案

MediaPlayer mp;

里面 Oncreate()
mp= MediaPlayer.create(getApplicationContext(), R.raw.tr);

音乐文件应位于原始目录中

开始音乐
mp.start();

关于android - 在Android onTouch上播放音频,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34101770/

相关文章:

android - 如何在 Android 中更改微调器的列表背景颜色

android - 可以在 google play store 上设置发布日期吗?

javascript - MIX Wav 文件并使用 Web Audio API 导出

audio - 将 youtube-dl 与 ffmpeg 一起使用时,什么合并扩展 (mkv/mp4) 可以获得最佳音质

c# - 如何判断文件类型?

html - 音频在 html5 中不起作用

android - Application.mk 被 Android Studio 忽略

java - Android Studio 3.2.1之后的构建错误

audio - 选择音频 API

java - 分层mp3音轨