3gp 形式の動画を再生するアプリケーションを作成しました。すべてがスマートフォンでうまく機能しています。タブレットにアプリをインストールしたところ、動画再生中におかしなことがありました。全体のレイアウトは縦モードですが、このようにムービーを 90 度回転させて横向き (縦モードの場合と同じサイズ) で再生します。
android:screenOrientation="portrait"
でのアクティビティ用にマニフェスト ファイルを設定しましたVideoView
。ランドスケープモードで表示したくありません。
自動回転画面が無効になっているスマートフォンでは、デフォルトの向きは縦です。タブレットのデフォルトの向きは横です。タブレットでのもう 1 つのことは、YouTube アプリを使用してポートレート モードでムービーを選択すると、自動的にビデオが回転し、サイズが変更され、ランドスケープ モードに固定されます。
ハードウェア設定やアプリケーションを変更できるかどうかはわかりません。
現在、タブレットで私のアプリケーションは、縦向きモードでビューを回転させてムービーを再生しています。
編集: マニフェスト ファイル:
<activity android:name=".Video" android:screenOrientation="portrait" />
コード:
ByteArrayInputStream inputStream = new ByteArrayInputStream(cursor.getBlob(2)); //get from database
stream = inputStream;
if (stream == null)
throw new RuntimeException("stream is null");
try {
temp = File.createTempFile("movie", "3gp");
} catch (IOException e1) {
e1.printStackTrace();
}
temp.deleteOnExit();
tempPath = temp.getAbsolutePath();
try {
out = new FileOutputStream(temp);
} catch (FileNotFoundException e1) {
e1.printStackTrace();
}
byte buf[] = new byte[128];
do {
try {
numread = stream.read(buf);
} catch (IOException e) {
e.printStackTrace();
}
if (numread <= 0)
break;
try {
out.write(buf, 0, numread);
} catch (IOException e) {
e.printStackTrace();
}
} while (true);
try {
stream.close();
} catch (IOException ex) {
Log.e("ERROR", "error: " + ex.getMessage(), ex);
}
final VideoView myVideoView = new VideoView(this);
myVideoView.setVideoPath(tempPath);
myVideoView.setOnPreparedListener(new MediaPlayer.OnPreparedListener() {
public void onPrepared(MediaPlayer arg0) {
myVideoView.start();
}
});
myVideoView.setOnCompletionListener(new MediaPlayer.OnCompletionListener() {
public void onCompletion(MediaPlayer mp) {
mp.reset();
myVideoView.setVideoPath(tempPath);
}
});
tl.addView(myVideoView); //add videoview to table layout
レイアウト.xml:
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/rl"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:background="@drawable/tlomain">
<TableLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/tlayout"
android:layout_height="fill_parent"
android:layout_width="fill_parent">
</TableLayout>
</RelativeLayout>
タブレット画面のすべての要素はポートレート モードに応じて問題なく、ビデオのみが 90 度回転します。
YouTube を使用してどのように見えるかを確認できます: http://i.stack.imgur.com/qwP5S.jpg
動画が回転します。私のスマートフォンでは、Youtube アプリの同じ動画が横表示で正常に設定されています。
アプリで変更する方法がわかりません。ハードウェアの設定ですか?タブレット デバイスで 3gp、mp4 形式を開きたい場合、90 度回転してランドスケープ モードに対応しますか?