Android Mediaplayerでファイルを再生します
-
29-10-2019 - |
質問
AndroidのMediaplayerで再生されるように録音されたビデオファイルを再生したいです。私はメディアプレーヤーに意図を介して電話をかけたいと思っています。誰でもコードを手伝ってくれます。
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
// TODO Auto-generated method stub
if (resultCode == RESULT_OK) {
if (requestCode == REQUEST_VIDEO_CAPTURED) {
uriVideo = data.getData();
Toast.makeText(VedioRecording.this, uriVideo.getPath(),
Toast.LENGTH_LONG).show();
}
} else if (resultCode == RESULT_CANCELED) {
uriVideo = null;
Toast.makeText(VedioRecording.this, "Cancelled!", Toast.LENGTH_LONG)
.show();
}
if (requestCode == 2) {
selectedImageUri = data.getData();
// OI FILE Manager
filemanagerstring = selectedImageUri.getPath();
// MEDIA GALLERY
selectedImagePath = getPath(selectedImageUri);
Intent intent1 = new Intent(android.provider.MediaStore.INTENT_ACTION_MUSIC_PLAYER).setData(selectedImageUri);
startActivityForResult(intent1, 3);
// videoviewPlay.setVideoURI(selectedImageUri);
// videoviewPlay.start();
}
if (requestCode == 3) {
}
}
private String getPath(Uri uri) {
String[] projection = { MediaStore.Video.Media.DATA };
Cursor cursor = managedQuery(uri, projection, null, null, null);
if (cursor != null) {
// HERE YOU WILL GET A NULLPOINTER IF CURSOR IS NULL
// THIS CAN BE, IF YOU USED OI FILE MANAGER FOR PICKING THE MEDIA
int column_index = cursor
.getColumnIndexOrThrow(MediaStore.Video.Media.DATA);
cursor.moveToFirst();
return cursor.getString(column_index);
} else {
return null;
}
}
}
これは私のコードです。私はActivityに基づいた例外を取得しています
解決
アクティビティに基づいた例外を取得する最も一般的なシナリオは、マニフェストでそれを宣言せずに作成したアクティビティを起動しようとするときです。
確かにアクティビティを起動するために使用するコードを投稿してください。アプリケーションから外部からフレームワークによって提供されるべきアクティビティを使用しようとしている場合、あなたは意図を誤って設定するだけかもしれません
コードが投稿された後に更新...
あなたのコードは、Intent Action intent_action_action_music_playerを使用していて、画像URLをデータとして渡しているようです(それは画像へのパスですか、それとも変数が誤った名前ですか?)。システムには、そのシナリオを処理するために登録されている意図レシーバーがないため、activityNotFoundExceptionを取得します。また、この定数のドキュメントを見ると、ある時点でそれが廃止されたことがわかります。
http://developer.android.com/reference/android/provider/mediastore.html#intent_action_music_player
通常、intent.action_viewを使用し、データと一緒にmimeタイプを渡します。次のようなもの...
Intent intent = new Intent(Intent.ACTION_VIEW);
intent.setDataAndType(Uri.parse(pathToVideoFile), "video/*");
startActivity(intent);
MIMEタイプの「ビデオ/*」をSetDataAndTypeに渡すことで、システムへのリクエストにより具体的になります。
システムをクエリして、意図を処理できるかどうかを確認する場合(コードを実行しているユーザーのデバイスには、意図を処理できるアクティビティが登録されていることを意味します)、packagemanager.queryintentactivitiesメソッドを使用できます。
他のヒント
String extension = MimeTypeMap
.getFileExtensionFromUrl(selectedImagePath);
String mimeType = MimeTypeMap.getSingleton()
.getMimeTypeFromExtension(extension);
Intent mediaIntent = new Intent(Intent.ACTION_VIEW);
mediaIntent.setDataAndType(Uri.parse(selectedImagePath),
mimeType);
startActivity(mediaIntent);
これは私を助けたコードです