android - MediaPlayer 不会停止或暂停
问题描述
我正在尝试制作一个简单的应用程序来帮助我学习如何为 Android 编写代码。应用程序的原理很简单:当您按下按钮时,它开始播放声音文件。当您松开按钮时,音频停止。按下按钮有效,但释放按钮无效。提前致谢!这是我的java代码:
package com.example.siriu.presstoplay;
import android.media.MediaPlayer;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.view.MotionEvent;
import android.util.Log;
public class MainActivity extends AppCompatActivity {
private MediaPlayer mp;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Button button = findViewById(R.id.pressbutton);
button.setOnTouchListener(handleTouch);
mp = MediaPlayer.create(this, R.raw.test);
}
private View.OnTouchListener handleTouch = new View.OnTouchListener() {
@Override
public boolean onTouch(View v, MotionEvent event) {
switch (event.getAction()) {
case MotionEvent.ACTION_DOWN:
Log.d("button", "down");
play();
break;
case MotionEvent.ACTION_UP:
Log.d("button", "up");
pause();
break;
}
return true;
}
};
public void play (){
final MediaPlayer mp = MediaPlayer.create(this, R.raw.test);
mp.start();
Log.d("MediaPlayer", "started");
}
public void pause (){
mp.stop();
Log.d("MediaPlayer", "paused");
}
}
解决方案
Android MediaPlayer will not stop or pause
Because in your play ()
method you are starting local declared MediaPlayer
of play ()
method
and in your pause ()
you are trying to stop MediaPlayer
that you have declared global
in this situation your global declared
MediaPlayer mp;
hasn't start yet
Try this
Remove final MediaPlayer mp = MediaPlayer.create(this, R.raw.test);
from Your play()
Method
public void play (){
mp.start();
Log.d("MediaPlayer", "started");
}
推荐阅读
- python - 如何使用第一个字段作为标签,从具有 3 个字段的模型中创建 Django 表单,其余的作为单选检查?
- jquery - Kendo UI Validation 错误消息摘要
- python - 如何使用 ctypes 将类对象从 c++ (DllExport) 返回到 python,反之亦然?
- ios - 快速减少文本 alpha 效果
- java - Spring Boot 2 升级无法将类名解析为属性
- python - Django views.py 代码的必需解释
- sql - 我需要帮助才能从单个表创建单行查询
- c# - “无法将当前 JSON 对象反序列化为类型
- neo4j - Neo4j LOAD CSV 错误:未知协议:c
- python - python web从url列表中抓取