【发布时间】:2015-11-25 06:28:25
【问题描述】:
我是使用 Eclipse 进行 android java 编程的新手(我有 .NET 背景),但无法在模拟器中播放视频(也无法满足 android htc 的需求)
我的设置:
- 面向 Java 开发人员的 Eclipse IDE,版本:Helios Service Release 2
- 适用于 Eclipse 的 Android SDK 和 ADT 插件
我正在使用的视频是我用我的 htc 愿望录制的 3gp 视频。
我已经尝试了两种方法
- 视频查看
- 带有 MediaPlayer 的 SurfaceView 这是我从 Reto Meier 的“Professional Android 2 Application Development”一书中取出的。
我的目标是 Android 2.2(无论是在模拟器中,还是在我的 htc 上)
详情
1. VideoView方法
getDuration 始终返回 -1,即使在调用 videoView.start() 之后 isPlaying 也是错误的。 这是我正在使用的代码:
public class MyActivity extends Activity
{
private static final String FileName = "VIDEO0015.3gp";
private static final String MyTag = "MyActivity";
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
VideoView videoView = (VideoView) findViewById(R.id.videoView1);
videoView.setKeepScreenOn(true);
File clip=new File(Environment.getExternalStorageDirectory(), FileName);
if (clip.exists())
{
videoView.setVideoPath(clip.getAbsolutePath());
int duration = videoView.getDuration();
if (videoView.canSeekForward())
{
videoView.seekTo(duration/2);
}
videoView.start();
}
}
}
main.xml 文件:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
>
<VideoView android:id="@+id/videoView1"
android:layout_width="match_parent"
android:layout_height="wrap_content">
</VideoView>
</LinearLayout>
2。带有 MediaPlayer 的 SurfaceView 通过这种方法,我得到了正确的持续时间(大约 15 秒)并且 isPlaying 是正确的。 什么都看不到,视频播放也永远不会完成。
如果有人要检查,我会添加代码。
感谢您的帮助,我越来越绝望了。
弗兰克
【问题讨论】:
-
看起来很奇怪,你能发布你的 main.xml 吗(不要忘记将其格式化为代码 - 只需标记它并按 ctrl+k),你是否尝试播放另一个视频(未录制在电话)?
-
@MByD:感谢您的帮助。我已经添加了 main.xml 文件的内容。我已经玩了一些布局设置,但没有改变。我真的是一个新手,所以也许我做的事情根本上是错误的。关于其他视频,我尝试了另一个,但由于另一个错误而失败。因为第二次尝试(使用 surfaceView 和 mediaPlayer)返回正确的持续时间并说 isPlaying = true 我假设视频没问题。我会检查另一个视频。有没有保证可以正常播放的视频?
-
我尝试了你的代码,得到了相同的结果(视频有效),我不知道为什么,也许我以后有时间检查一下。