求助 android使用surfaceView播放视频时播放窗口为什么不受控制 在android上和ipod上都能够控制视频窗口的大小,但是当安装在一个android的开发板上时,当播放视频时会全屏。求大神帮助下! 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 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; } }} video播放,是不是被转到overlay去了? overlay通常用全屏方式实现,是最简单最常用的 那要怎么去设置这个overlay??? 重叠控件点击事件求解 listview有多个view,怎么回填 android expandablelistview 高亮的问题。 setTextColor的问题 Andrion问题 android 控件 怎么传值啊 当在手机调试安卓程序,程序直接停止了,没有报异常怎么办? AsyncTask调用webservice数据报空指针 AndroidStudio 3.0 特别慢怎么办? 请问扫描二维码、条形码是否须要互联网环境? android launcher 在平板上显示手机的布局 android 怎么把listview嵌套进界面中
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;
}
}
}