1

Android アプリの eclipse にビデオビューを配置しましたが、電話でビデオが再生されません。

package test.test;

import android.app.Activity;
import android.net.Uri;
import android.os.Bundle;
import android.widget.MediaController;
import android.widget.VideoView;


public class graphics extends Activity {
    @Override
    public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);

    setContentView(R.layout.main);

    VideoView videoView = (VideoView) findViewById(R.id.test);
    MediaController mediaController = new MediaController (this);
    mediaController.setAnchorView(videoView);
    Uri video = Uri.parse("http://commonsware.com/misc/test2.3gp");
    videoView.setMediaController(mediaController);
    videoView.setVideoURI(video);
    videoView.start();

    }
} 
4

2 に答える 2

1

問題は、接続 (http) または VideoView の使用にあると思います。

接続に問題があるかどうかを確認するには、電話のローカルで、つまり SD カードからメディア コンテンツを再生してみてください。

問題は VideoView の使用にも起因しています

VideoView クラスは、SurfaceView と MediaPlayer を使用してビデオ再生を実現します。MediaPlayer には、URL の設定、メディア パイプラインの準備、パイプラインの開始などを行うための API があります。パイプラインは準備ができている必要があります。つまり、プリロール状態になっている必要があります。これをアプリケーションに通知するために、MediaPlayer はリスナーを提供します。この場合は onPrepareListener です。MediaPlayer と対話する VideoView も (する必要がありますか?)、これらのリスナーも提供します。

再生に VideoView を使用する VideoPlayer アクティビティのコードの下をご覧ください。(ローカル コンテンツに対してのみ検証済み) このアクティビティは、インテントから再生されるファイルへの絶対パスを取得します。(リスト アクティビティから渡されます)

import android.app.Activity;
import android.content.Intent;
import android.media.MediaPlayer;
import android.media.MediaPlayer.OnCompletionListener;
import android.media.MediaPlayer.OnPreparedListener;
import android.os.Bundle;
import android.view.View;
import android.view.ViewGroup;
import android.view.Window;
import android.view.WindowManager;
import android.widget.MediaController;
import android.widget.VideoView;


public class VideoPlayer extends Activity implements OnCompletionListener, OnPreparedListener {
    private static VideoView vView;
    private String filePath;
    public static long clipDurationMS; 
    private View        mLoadingIndicator; 

    public void onCreate(Bundle savedInstanceState)     
    {
        super.onCreate(savedInstanceState);
        getWindow().addFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN);
        requestWindowFeature(Window.FEATURE_NO_TITLE);
        setContentView(R.layout.main);

        vView = (VideoView)findViewById(R.id.VideoView01);
        mLoadingIndicator = findViewById(R.id.progress_indicator); 

        vView.setBackgroundColor(0x0000); 

        Intent intent = getIntent();
        Bundle extras = intent.getExtras();
        filePath = (String)extras.get("URL");

        vView.setVideoPath(filePath);  

        MediaController mc;
        mc = new MediaController(this);
        vView.setMediaController(mc);

        vView.requestFocus();
        vView.setOnCompletionListener(this);
        vView.setOnPreparedListener(this);
    }

    public void onCompletion(MediaPlayer arg0) 
    {
        finish();   
    }

    public void onPrepared(MediaPlayer arg0) 
    {
        mLoadingIndicator.setVisibility(View.GONE);
        ViewGroup.LayoutParams params;

        params        = vView.getLayoutParams();

        params.height = arg0.getVideoHeight();
        params.width  = arg0.getVideoWidth();

        vView.setLayoutParams(params);

        vView.start(); 
    }

    public void onStop(){
        super.onStop();
        vView.stopPlayback();
        finish();
    }
}

シャッシュ

于 2011-08-08T04:31:21.920 に答える
0

電話がインターネット接続に接続されているかどうかを確認します。私の見解では、Uri からビデオを再生しようとしているため、問題になる可能性があります。

于 2011-08-08T05:47:39.527 に答える