我看到的错误是调用reset()和release()永远不会返回,从而使我的应用程序处于无限停止状态.如果我在reset()或release()之前调用stop()并不总是可以重现挂起.
任何与MediaPlayer锁定有任何类似问题的人?有小费吗?我正在研究一个多线程应用程序.
查看正在保留的线程时,DDMS会报告以下内容:
CLASS | 方法| 文件| LINE | NATIVE
android.media.MediaPlayer _release MediaPlayer.java -2 true
android.media.MediaPlayer release MediaPlayer.java 1049 false
嗨,大家好,我想在点击文字时播放某个mp3文件.例如,我点击了"Nicholas"这个词,应用程序必须播放nicholas.mp3 ...
对不起我的乱码,我是android dev的新手:
package com.example.playword;
import java.io.IOException;
import android.app.Activity;
import android.media.MediaPlayer;
import android.os.Bundle;
//import android.os.Handler;
import android.view.View;
//import android.view.View.OnClickListener;
//import android.widget.Button;
import android.widget.TextView;
public class PlayWord extends Activity {
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
//final Handler mHandler = new Handler();
final TextView nicholas = (TextView) findViewById(R.id.nicholas);
final TextView was = (TextView) findViewById(R.id.was);
nicholas.setText("Nicholas ");
was.setText("was ");
/*
Button btn = (Button) (findViewById(R.id.nicholasBtn));
btn.setOnClickListener(new OnClickListener(){
@Override
public void …Run Code Online (Sandbox Code Playgroud) 我正在尝试HTTP在我的应用程序中编写一个轻量级服务器,以feed动态生成MP3内置数据Android MediaPlayer.我不被允许将我的内容存储在SD card.
我的输入数据基本上是无限长度的.我告诉MediaPlayer它的数据源基本上应该是这样的"http://localhost/myfile.mp3".我有一个简单的服务器设置,等待MediaPlayer发出此请求.但是,MediaPlayer不是很合作.首先,它创建HTTP GET并尝试获取整个文件.如果我们尝试简单地将数据转储到其中,socket那么我们尝试使用HTTPRange标头以块的形式写入数据. MediaPlayer不喜欢这个并且不会继续请求后续的块.
有没有人直接将数据流成为MediaPlayer?我需要实现一个RTSP或Shoutcast服务器吗?我只是错过了批评HTTP header吗?我应该在这里使用什么策略?
我将声音文件附加在资源文件夹中,以便在通知中播放声音,但我无法播放资源文件夹中的声音.
我有设置页面,用户可以从中设置通知声音,用户也可以播放声音.这部分完成了.我可以使用Media Player播放资源文件夹中的声音.我可以在通知创建时使用相同的逻辑,但是当用户点击通知时可能会发生问题,因为媒体播放器仍在播放声音.
我试过了
notification.sound = Uri.parse("file:///android_asset/Sound/Long/AlarmClock.mp3");
Run Code Online (Sandbox Code Playgroud)
也尝试过这样
notification.sound = Uri.parse("android_asset/Sound/Long/AlarmClock.mp3");
Run Code Online (Sandbox Code Playgroud)
但我的问题仍未解决.
有没有其他方法可以在资产目录中设置通知中的声音?
logcat的
01-10 09:57:01.509: ERROR/PlayerDriver(31): Command PLAYER_SET_DATA_SOURCE completed with an error or info PVMFErrNotSupported
01-10 09:57:01.509: ERROR/MediaPlayer(52): error (1, -4)
01-10 09:57:01.519: WARN/NotificationService(52): error loading sound for android_asset/Sound/Long/audio.mp3
01-10 09:57:01.519: WARN/NotificationService(52): java.io.IOException: Prepare failed.: status=0x1
01-10 09:57:01.519: WARN/NotificationService(52): at android.media.MediaPlayer.prepare(Native Method)
01-10 09:57:01.519: WARN/NotificationService(52): at android.media.AsyncPlayer.startSound(AsyncPlayer.java:64)
01-10 09:57:01.519: WARN/NotificationService(52): at android.media.AsyncPlayer.access$200(AsyncPlayer.java:33)
01-10 09:57:01.519: WARN/NotificationService(52): at android.media.AsyncPlayer$Thread.run(AsyncPlayer.java:99)
01-10 09:57:01.519: WARN/PlayerDriver(31): PVMFInfoErrorHandlingComplete
Run Code Online (Sandbox Code Playgroud)
或任何其他想法?请给我提示.
notifications android media-player android-assets android-resources
在我的项目中,我使用以下代码在Android媒体播放器中播放音乐文件
MediaPlayer mPlayer = MediaPlayer.create(MyActivity.this, R.raw.myfile);
mPlayer.start();
Run Code Online (Sandbox Code Playgroud)
以上是在播放按钮的onclick编码.我想通过再次点击相同的按钮来暂停播放.我的单个按钮用于播放/暂停.我该怎么做
这是用于从其他类动态获取文件名(.mp3)的代码,因为我的assets文件夹中有很多mp3文件:
playAudioButton.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v)
{
FileName audio=new FileName();
String audioName=audio.getAudioName(count).toString();
if(audioName=="NO Audio")
{
Toast.makeText(getApplicationContext(), "No Audio for this page", Toast.LENGTH_SHORT).show();
}
else
{
try {
afd=getAssets().openFd(audioName + ".mp3");
mp = new MediaPlayer();
mp.setDataSource(afd.getFileDescriptor(),afd.getStartOffset(),afd.getLength());
mp.prepareAsync();
mp.start();
} catch (IllegalArgumentException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IllegalStateException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
});
}
Run Code Online (Sandbox Code Playgroud)
Log Cat: …
我想要媒体控制,如播放/暂停我正在我的应用程序中播放的流媒体音频.我正在使用MediaPlayer来播放和播放音频.
有人可以提供有关如何将MediaController与MediaPlayer一起使用的代码段吗?
谢谢克里斯
我需要播放实时音频流,实际上它是无线电.问题是我还需要管理20分钟的流量缓冲区.据我所知,用android实现起来并不容易.
首先我检查了MediaPlayer,但它没有提供任何缓冲区管理方法.实际上你甚至无法直接设置缓冲区大小.
其次,我尝试使用本地文件管理缓冲区:逐步将流下载到临时文件并切换它们.但是当您想切换到以下文件(在MediaPlayer中更改数据源)时,音频不会连续播放.你可以听到短暂的中断.
最后一个想法是使用流代理.通常它用于在8以下的Android版本中播放流.在流代理中,您创建ServerSocket,从音频流中读取并写入播放器.所以实际上我可以在那里管理缓冲.我可以缓存流并写入MediaPlayer,无论我想要什么.但.它不适用于Android 8.
我得到异常:通过对等java.net.SocketException重置连接:由peer重置连接.MediaPlayer 8不想从套接字读取数据.
因此,我有两个问题:1)实现流缓冲的其他方法是什么?2)如何为Android 8改编StreamProxy?
任何想法都表示赞赏.
谢谢
我运行了我的应用程序,我无法在Android模拟器上运行声音.我在EclipseAVD Manager中检查并启用了音频播放布尔值.我还进入了Android模拟器中的声音选项并将其放置(放置时没有声音).我选中了一个框,表示所有选择都会产生噪音(仍然没有声音).
我的应用程序使用MediaPlayer该类,我正在运行win7 x64,如果它与它有任何关系.
感谢帮助.
我有一个SeekBar,它显示正确的MediaPlayer进度.但是,我遇到了麻烦 - 如果我在某处找到滚动框,它只会返回播放音频文件的位置.
public class EntityPageActivity extends Activity implements Runnable, OnClickListener, OnSeekBarChangeListener{
private SeekBar seekBar;
private Button startMedia;
private Button pauseMedia;
private MediaPlayer mp;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.entity_page);
AudioControl();
}
public void AudioControl(){
seekBar = (SeekBar) findViewById(R.id.seekBar);
startMedia = (Button) findViewById(R.id.play);
pauseMedia = (Button) findViewById(R.id.pause);
startMedia.setOnClickListener(this);
pauseMedia.setOnClickListener(this);
}
public void run() {
int currentPosition= 0;
int total = mp.getDuration();
while (mp!=null && currentPosition<total) {
try {
Thread.sleep(1000);
currentPosition= mp.getCurrentPosition();
} catch (InterruptedException …Run Code Online (Sandbox Code Playgroud)