【问题标题】:Playing Audio in Android onTouch在 Android onTouch 中播放音频
【发布时间】:2015-12-05 05:50:35
【问题描述】:

我正在编写代码来播放声音并在用户触摸屏幕时振动并且当他抬起手指时振动并且声音停止。 播放音频需要帮助...一切正常,包括振动,但未播放音频... 音频文件名为 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;
         }

     });

}

}

【问题讨论】:

    标签: android audio mp3 media-player ontouch


    【解决方案1】:
    MediaPlayer mp;
    

    内部Oncreate()

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

    音乐文件应该在你的 raw 目录中

    开始音乐

    mp.start();
    

    【讨论】:

    • 当我在 onCreate() 方法中编写 mp.start() 时,声音会播放......但是当我在 onTouch 方法中编写时它不会。
    • 如果你在onCreate上启动它,这意味着它一直播放到应用程序被销毁。你需要相应地停止它或暂停它......
    • 我知道 .. 但我想在触摸屏幕时播放音频,而不是在应用程序启动时播放音频,因此此代码不起作用
    • 这里这个链接会帮你解决...stackoverflow.com/questions/22861437/…
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-01-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多