test.mp4
プロジェクトのres/raw
ディレクトリにビデオを保存します。私はSurfaceView
そのように宣言しました:
<SurfaceView android:id="@+id/surface"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center">
</SurfaceView>
次に、私のアクティビティのonCreate ()
メソッドには、次のものがあります。
private MediaPlayer mp;
private SurfaceView view;
private SurfaceHolder holder;
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
view = (SurfaceView) findViewById (R.id.surface);
holder = view.getHolder();
holder.setKeepScreenOn (true);
mp = MediaPlayer.create(this.getBaseContext (), R.raw.test);
mp.setDisplay (holder);
mp.setLooping (true);
mp.start();
}
ディスプレイを設定しても、ビデオが表示されない理由がわかりません。私は API 7 (2.1.1) で実行しており、オーディオを取得しています。コントロール パネルのない、ビデオのみのタイプのインターフェイスが必要です。私が知る限りVideoView
、 は より単純ですがMediaPlayer
、コントロール層が組み込まれています。VideoView
また、リソースで使用する方法がわかりません。私が抱えているこれら 2 つの問題の回避策がある場合、または私の仮定VideoView
が間違っている場合は、教えていただければ幸いです。
更新:私は現在VideoView
クラスを使用しています。自動的に UI コントロール パネルが表示されるという私の想定は、本当に間違っていました。それでも、クラスをres/raw
介して保存されたビデオを再生できませんでした。MediaPlayer
電話をかけたりオーディオを再生したりすると常に失敗しますprepare ()
が、ビデオは再生されません。このため、私の質問はまだ残っています。
私が VideoView をどのように使用したかについて誰かが私の質問に出くわした場合は、res/raw
. 次のスニペットは、レイアウト ファイルにVideoView
の ID を持つ があることを前提としています。view
main.xml
public class generalActivity extends Activity {
@Override
public void onCreate (Bundle icicle) {
super.onCreate (icicle);
this.setContent (R.layout.main);
// You know the that view is an instance of VideoView, so cast it as such
VideoView v = (VideoView) this.findViewById (R.id.view);
// This is the name of the video WITHOUT the file extension.
// In this example, the name of the video is 'test.mp4'
String videoName = "test"
// You build the URI to your video here
StringBuilder uriPathBuilder = new StringBuilder ();
uriPathBuilder.append ("android.resource://");
uriPathBuilder.append (this.getPackageName ());
uriPathBuilder.append (File.separator);
uriPathBuilder.append ("raw");
uriPathBuilder.append (File.separator);
uriPathBuilder.append (videoName);
Uri uri = Uri.parse (uriPathBuilder.toString ());
view.setVideoURI (uri);
view.start ();
}
}
URIパスを取得するために参照として使用したリンクは次のとおりです:参照リンク
res/raw
MediaPlayer を使用してビデオを再生できるかどうかを尋ねたので、これを開いたままにしますVideoView
。を使用して思い通りに動作させたVideoView
としても、私の知る限り、できることとできないMediaPlayer
ことVideoView
があります。私が間違っている可能性もありますが、ビデオを表示するだけで高度なものは必要ない場合は、VideoView
十分だと確信しています。
ああ、そしてすべての助けをしてくれた@Raviに感謝します。