2012 年 2 月 18 日の更新
多忙な講師からボタンのあり方について返信があり、彼はそれが MediaController ボタン (再生、前、次) であるべきだと言いました。カスタム ボタンではなく、常に画面に表示する必要があると思います。再生ボタンの onclicklistener はないと思います。再生ボタンのクリックのリスナーはありますか (コード例の onCreate アクティビティ以外)。別のアクティビティを開始するために意図を使用する必要がないようにしています。ありがとう!
私の宿題プロジェクトは、既存のプロジェクト (MediaPlayer および MediaRecorder クラスを使用してオーディオをキャプチャする) を変更して、MediaController を使用してクリックしたときにビデオを再生するボタン (これは作成する必要があるものであり、MediaController が表示されたときの [再生] ボタンではないと想定しています) を追加することです。 . これを実行しようとしましたが、追加したコードでビデオを再生できません。私のクラスの資料の例では、MediaController の再生ボタンを使用しているため、最初にビデオを再生するためのカスタムメイドのボタンを作成する方法を学びたいと思います。その後、既存のプロジェクトへの統合を後で処理します。既存のサンプル コードを参照するか、この取り組みをガイドしてください。ありがとう!
今日、先に進み、MediaController を使用してビデオを再生するためのボタンのみを持つ別のプロジェクトを作成しました。予想どおり、まだ機能しません (ビデオの開始に失敗しました、NullPointerException)。以下にプロジェクトファイルを示します。私は今、無知です。問題の解決を開始するために、1 つまたは 2 つのことを指摘してください。再度、感謝します!
package com.mypackage;
import java.io.File;
import android.app.Activity;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.MediaController;
import android.widget.Toast;
import android.widget.VideoView;
import android.content.Context;
import android.os.Environment;
public class MediaActivity extends Activity {
private String path;
J
private VideoView vd;
//private Context context;
private String TAG = " ";
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
//context = this;
Button playVideoBtn =(Button)findViewById(R.id.playVideo);
playVideoBtn.setOnClickListener(new OnClickListener(){
public void onClick(View v){
try {
playVideo();
} catch (Exception ex) {
Log.e(TAG, "Failed to Start Playing the video", ex);
}
}
});
}
private void playVideo() throws Exception {
vd = (VideoView) findViewById(R.id.surface_view);
File directoryPath = Environment
.getExternalStoragePublicDirectory(Environment.DIRECTORY_MOVIES);
directoryPath.mkdirs();
path = directoryPath.toString() + "/Familyguy_Has_Own_Orbit.3gp";
if (path == "") {
// Tell the user to provide a media file URL/path.
Toast.makeText(MediaActivity.this, "Please edit MediaActivity, and set path"
+ " variable to your media file URL/path", Toast.LENGTH_LONG).show();
} else {
vd.setVideoPath(path);
vd.setMediaController(new MediaController(this));
vd.requestFocus();
vd.start();
}
}
}
ここに私のレイアウトファイルがあります:
Main.xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent">
<Button
android:id="@+id/playVideo"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="Playing Video"/>
</LinearLayout>
Videoview.xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
>
<VideoView
android:id="@+id/surface_view"
android:layout_width="320px"
android:layout_height="240px"
/>
</LinearLayout>