嗨,我正在使用mediacontroller来控制我的媒体播放器,我想使用keyEvents而不是触摸事件来控制,我使用下面的代码来做到这一点,但只有播放/暂停是工作的,当mediacontroller视图出现时,KEYCODE_MEDIA_FAST_FORWARD和KEYCODE_MEDIA_REWIND不被处理。
有谁能建议如何使用关键事件处理快进和快退。
请帮忙。
public boolean onKeyDown(int keyCode, KeyEvent event) {
mediaController.show();
switch (keyCode) {
case KeyEvent.KEYCODE_MEDIA_PLAY_PAUSE:
if (mediaPlayer.isPlaying()) {
pause();
} else
start();
return true;
case KeyEvent.KEYCODE_MEDIA_FAST_FORWARD: {
if (mediaPlayer.isPlaying()) {
currentPosition = mediaPlayer.getCurrentPosition();
seekTo(currentPosition + 2000);
}
}
return true;
case KeyEvent.KEYCODE_MEDIA_REWIND: {
if (mediaPlayer.isPlaying()) {
currentPosition = mediaPlayer.getCurrentPosition();
seekTo(currentPosition - 3000);
}
}
return true;
}
return false;
}
我创建了两个函数doForwardVideo()和doRewindVideo(),并在onClick侦听器和onKeyDownEvent()上使用它
希望这有帮助!!
public void doForwardVideo()
{
if (mPlayer == null) {
return;
}
int pos = mPlayer.getCurrentPosition();
pos += 15000; // milliseconds
mPlayer.seekTo(pos);
setProgress();
show(sDefaultTimeout);
}
public void doRewindVideo()
{
if (mPlayer == null) {
return;
}
int pos = mPlayer.getCurrentPosition();
pos -= 5000; // milliseconds
mPlayer.seekTo(pos);
setProgress();
show(sDefaultTimeout);
}
//*** Create two listeners which then you will set it in
//private void initControllerView(View v) method
private View.OnClickListener mRewListener = new View.OnClickListener() {
public void onClick(View v) {
doRewindVideo();
}
};
private View.OnClickListener mFfwdListener = new View.OnClickListener() {
public void onClick(View v) {
doForwardVideo();
}
};
//****** Here is snippet for private void initControllerView(View v) method
mFfwdButton = (ImageButton) v.findViewById(R.id.ffwd);
if (mFfwdButton != null) {
mFfwdButton.setOnClickListener(mFfwdListener);
if (!mFromXml) {
mFfwdButton.setVisibility(mUseFastForward ? View.VISIBLE : View.GONE);
}
}
mRewButton = (ImageButton) v.findViewById(R.id.rew);
if (mRewButton != null) {
mRewButton.setOnClickListener(mRewListener);
if (!mFromXml) {
mRewButton.setVisibility(mUseFastForward ? View.VISIBLE : View.GONE);
}
}
//***** onKeyDown() Event ****
@Override
public boolean dispatchKeyEvent(KeyEvent event) {
if (mPlayer == null) {
return true;
}
int keyCode = event.getKeyCode();
final boolean uniqueDown = event.getRepeatCount() == 0
&& event.getAction() == KeyEvent.ACTION_DOWN;
if (keyCode == KeyEvent.KEYCODE_HEADSETHOOK
|| keyCode == KeyEvent.KEYCODE_MEDIA_PLAY_PAUSE
|| keyCode == KeyEvent.KEYCODE_SPACE) {
if (uniqueDown) {
doPauseResume();
show(sDefaultTimeout);
if (mPauseButton != null) {
mPauseButton.requestFocus();
}
}
return true;
} else if (keyCode == KeyEvent.KEYCODE_MEDIA_PLAY) {
if (uniqueDown && !mPlayer.isPlaying()) {
mPlayer.start();
updatePausePlay();
show(sDefaultTimeout);
}
return true;
} else if (keyCode == KeyEvent.KEYCODE_MEDIA_STOP
|| keyCode == KeyEvent.KEYCODE_MEDIA_PAUSE) {
if (uniqueDown && mPlayer.isPlaying()) {
mPlayer.pause();
updatePausePlay();
show(sDefaultTimeout);
}
return true;
} else if (keyCode == KeyEvent.KEYCODE_MEDIA_FAST_FORWARD) {
if (uniqueDown) {
doForwardVideo();
}
// don't show the controls for volume adjustment
return true;
} else if (keyCode == KeyEvent.KEYCODE_MEDIA_REWIND) {
if (uniqueDown) {
doRewindVideo();
}
// don't show the controls for volume adjustment
return true;
}else if (keyCode == KeyEvent.KEYCODE_VOLUME_DOWN
|| keyCode == KeyEvent.KEYCODE_VOLUME_UP
|| keyCode == KeyEvent.KEYCODE_VOLUME_MUTE) {
// don't show the controls for volume adjustment
return super.dispatchKeyEvent(event);
} else if (keyCode == KeyEvent.KEYCODE_BACK || keyCode == KeyEvent.KEYCODE_MENU) {
if (uniqueDown) {
hide();
}
return true;
}
show(sDefaultTimeout);
return super.dispatchKeyEvent(event);
}
我必须使用MediaPlayer播放视频,而不是VideoView。我有一个Xml布局的SurfaceView,在活动端有一个MediaPlayer和一个MediaController。 提前道谢。
问题内容: 这是我的代码,但显示了进度。这段代码有什么错误吗?请提供一些想法来解决此问题,或者提供一些与此相关的链接。 问题答案: 更新的答案: 要关闭ProgressHUD:
问题内容: 我想创建一个Android应用程序,该应用程序是Internet广播电台的客户端。我想让它看起来像是Android原生的吗?但是我与Android API逻辑和文档相混淆。我得到的是我需要MediaPlayer和MediaController类。我是对的,有没有很好的Android AUDIO播放器示例? 特别是,我对如何一起使用和类非常感兴趣。 UPD: 最后,我得到了代码,该代码正
我有几个关于备份/恢复Cassandra集群的最佳方法的问题。 背景:我有一个在EC2中运行的集群。它的节点配置如下: 实例类型:m3.medium存储:50 GB根卷/100 GB另一个卷 在阅读了大量的文件和搜索了一些网站后,我明白了带有Cassandra(nodetool)快照的EBS快照看起来很有前途。 问题:EBS 还拍摄增量快照,Nodetools 也拍摄快照,那么这两个工具有何不同或
问题内容: 我有几个Express应用程序,我发现在某些模块中,该请求是在请求处理程序的末尾(或之后)调用的,而在其他模块中则没有调用。 例如: 要么: 两种情况都可以,但是当我运行许多请求时,我担心泄漏或用完文件描述符之类的事情。哪一个“更正确”? 问题答案: 您的问题的答案是否定的。如果您致电,则不必致电。呼唤你。 来自/lib/response.js,这是函数的结尾:
Vanilla 的 Service vanilla 的 Service 预设为项目对某些通用业务逻辑封装为独立的 Service,方便维护、管理、缓存等。 Vanilla 的 Service 在项目的 models/service 路径下,一般使用 LoadModel 方法进行加载 最简单的 Service 由自动生成的 demo 中默认生成了 UserService,可以看出 UserServi