求助 android使用surfaceView播放视频时播放窗口为什么不受控制

allanence 2012-06-15 03:00:33
在android上和ipod上都能够控制视频窗口的大小,但是当安装在一个android的开发板上时,当播放视频时会全屏。。。。求大神帮助下!
...全文
310 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
c569077938 2012-07-19
  • 打赏
  • 举报
回复
碰到同样的问题。。
allanence 2012-06-25
  • 打赏
  • 举报
回复
那要怎么去设置这个overlay???
freshui 2012-06-21
  • 打赏
  • 举报
回复
video播放,是不是被转到overlay去了? overlay通常用全屏方式实现,是最简单最常用的
allanence 2012-06-21
  • 打赏
  • 举报
回复
import java.io.File;
import java.io.IOException;

import android.app.Activity;
import android.media.AudioManager;
import android.media.MediaPlayer;
import android.media.MediaPlayer.OnBufferingUpdateListener;
import android.media.MediaPlayer.OnCompletionListener;
import android.media.MediaPlayer.OnPreparedListener;
import android.os.Bundle;
import android.os.Environment;
import android.view.KeyEvent;
import android.view.SurfaceHolder;
import android.view.SurfaceHolder.Callback;
import android.view.SurfaceView;
import android.webkit.WebView;
import android.webkit.WebViewClient;

public class ElebusDemActivity extends Activity implements
OnCompletionListener, Callback, OnBufferingUpdateListener,
OnPreparedListener {
/** Called when the activity is first created. */
private WebView webview;
private SurfaceView sView;
private String playPath;// 播放文件的路径
private SurfaceHolder hodler;
private String path = null; // 播放路径
private MediaPlayer mediaPlayer;
private int videoWhith;
private int videoHeight;
public int hour; // 小时
public int minute; // 分钟
public int second; // 秒m

// 768px
// 1366px http://192.168.0.52/stations/display.php
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
// requestWindowFeature(Window.FEATURE_NO_TITLE);
setContentView(R.layout.main);
mediaPlayer = new MediaPlayer();
sView = (SurfaceView) findViewById(R.id.surfaceView1);
// 得到SurfaceHolder对象
hodler = sView.getHolder();
// 设置回调函数
hodler.addCallback(this);
// 设置风格
hodler.setType(SurfaceHolder.SURFACE_TYPE_PUSH_BUFFERS);


webview = (WebView) findViewById(R.id.webview);
webview.getSettings().setJavaScriptEnabled(true);
webview.loadUrl("http://192.168.0.52/stations/display1.html");
webview.setWebViewClient(new MyWebViewClient());

}

private void play() {
path = Environment.getExternalStorageDirectory().getPath()
+ File.separatorChar+"VideosZip1" + File.separator + "video.mp4";
// path="mnt/sdcard-ext"+File.separator+ "VideosZip1" + File.separator + "video.mp4";
System.out.println("path----------->>>>>>>>>" + path);

// 构建MediaPlayer对象
try {
// 设置媒体文件路径
mediaPlayer.setDataSource(path);

// 设置通过SurfaceView来显示画面
mediaPlayer.setDisplay(hodler);
// 准备
mediaPlayer.prepareAsync();
// 设置监听事件

} 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 blockj
e.printStackTrace();
}
mediaPlayer.setOnBufferingUpdateListener(this);
mediaPlayer.setOnCompletionListener(this);
mediaPlayer.setOnPreparedListener(this);
mediaPlayer.setAudioStreamType(AudioManager.STREAM_MUSIC);
}

@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
if (keyCode == KeyEvent.KEYCODE_BACK && event.getRepeatCount() == 0) {
event.startTracking();
finish();
System.exit(0);
return true;
}

return super.onKeyDown(keyCode, event);
}

public class MyWebViewClient extends WebViewClient {
public boolean shouldOverviewUrlLoading(WebView view, String url) {
view.loadUrl(url);
return true;
}
}

public void onCompletion(MediaPlayer mp) {
// TODO Auto-generated method stub
mp.seekTo(0);
mp.start();
}

public void onPrepared(MediaPlayer mp) {
// TODO Auto-generated method stub
videoWhith = mediaPlayer.getVideoWidth();
videoHeight = mediaPlayer.getVideoHeight();

if (videoWhith != 0 && videoHeight != 0) {
// 设置视频的宽度和高度
hodler.setFixedSize(videoWhith, videoHeight);
// 开始播放
mediaPlayer.start();
}
}

public void onBufferingUpdate(MediaPlayer mp, int percent) {
// TODO Auto-generated method stub

}

// 更改时触发事件
public void surfaceChanged(SurfaceHolder holder, int format, int width,
int height) {
// TODO Auto-generated method stub

}

// 当SurfaceHolder创建时触发
public void surfaceCreated(SurfaceHolder holder) {
// TODO Auto-generated method stub
play();
}

public void surfaceDestroyed(SurfaceHolder holder) {
// TODO Auto-generated method stub

}
// 销毁
@Override
protected void onDestroy() {
// TODO Auto-generated method stub
super.onDestroy();
if (mediaPlayer != null) {
mediaPlayer.release();
mediaPlayer = null;
}
}
}
allanence 2012-06-21
  • 打赏
  • 举报
回复
呵呵……你说对了,就是底层类库被定制过了的。
阿鹏兄 2012-06-19
  • 打赏
  • 举报
回复
怀疑你的开发板底层类库被厂家定制过。
阿鹏兄 2012-06-19
  • 打赏
  • 举报
回复
代码贴出来看看

80,493

社区成员

发帖
与我相关
我的任务
社区描述
移动平台 Android
androidandroid-studioandroidx 技术论坛(原bbs)
社区管理员
  • Android
  • yechaoa
  • 失落夏天
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧