網頁

2012年6月29日 星期五

[雜事]2012-06-29 eclipse之播放MP4檔案

看到了標題

以為是從SD卡讀嗎?當然沒這麼簡單

這次採用的是把影像檔包到APK裡面來作讀取

關於這邊的程式碼

也簡單的公開給大家:




video.java

package org.example.video;

import android.app.Activity;
import android.media.MediaPlayer;
import android.media.MediaPlayer.OnErrorListener;
import android.net.Uri;
import android.os.Bundle;
import android.widget.VideoView;

public class Video extends Activity {
    /** Called when the activity is first created. */
 
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);


 requestWindowFeature(Window.FEATURE_NO_TITLE);
        getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,
                   WindowManager.LayoutParams.FLAG_FULLSCREEN);

/全螢幕顯示//




        setContentView(R.layout.main);

        VideoView vView = (VideoView) findViewById(R.id.video);

        Object vSource = "android.resource://org.example.video/"             //這邊是播放的關鍵.檔按放在res/raw/XXXX
                + R.raw.video;
        vView.setVideoURI(Uri.parse((String) vSource));

        vView.setOnErrorListener(mOnErrorListener);
        vView.requestFocus();
        vView.start();
    }

    private OnErrorListener mOnErrorListener = new OnErrorListener() {   //少了這一個會產生錯誤//

        public boolean onError(MediaPlayer mp, int what, int extra) {
            // Your code goes here
            return true;
        }
    };
       

    }


layout布置:


<?xml version="1.0" encoding="utf-8"?>
<FrameLayout
  xmlns:android="http://schemas.android.com/apk/res/android"
  android:layout_width="fill_parent"
  android:layout_height="fill_parent" >



  <VideoView
      android:id="@+id/video"
      android:layout_width="wrap_content"
      android:layout_height="378dp"
      android:layout_gravity="center" />

</FrameLayout>
















經過好幾天的測試

終於可以播放,在網路上找到的大部份都是採用去sd卡裡面讀取

如果是在模擬器下,還要額外先把影像檔塞到data內

一開始一直以為是影片問題

到後面才發現少了一個errorlistener就會發生錯誤...

以及這個run到最後會卡在影片最後一個畫面就停止


ok 就先到這邊!!





沒有留言:

張貼留言

注意:只有此網誌的成員可以留言。

Site Meter