Je travaille sur la fusion audio vidéo et tout fonctionne bien. Après la fusion du fichier, il est enregistré dans le chemin spécifié. Et ce chemin est passé à l'autre activité que nous obtenons onActivityResult et ce fichier est lu dans videoView.file.exists() échoue toujours dans Android
Tout fonctionne bien, il y a une chose qui me fait rester à un seul endroit. et c'est dans mon onAcitivityResult que je reçois le chemin spécifié, vérifié dans le journal, mais quand il s'agit de trouver le fichier mon file.exists() renvoient toujours null.
Je peux voir mon fichier stocké dans le bon chemin, mais je ne sais pas pourquoi cela ne fonctionne pas. J'ai utilisé file.exists() dans une autre activité et cela fonctionne bien mais pas sur cette activité.
J'ai fait chaque chose possible pour résoudre mon problème et vérifié sur internet mais aucun résultat.
Les choses que j'ai essayé sont:
File file = new File(customVideoPath);
if(file.exists()){
//do something
}else
//do something
J'ai essayé cela aussi:
File file = new File(Environment.getExternalStorageDirectory().getAbsolutePath + customVideoPath);
C'est une solution plus que je pensais travailler, mais ne fonctionne pas:
File file = new ("/mnt"+customVideoPath);
Il est toujours à la condition else et n'exécute pas la fonction désirée.
En venant au code J'envoie les données dans ce code:
fichier qui passe sous forme de chemin
@Override
protected void onPostExecute(String s) {
super.onPostExecute(s);
Intent intent = new Intent();
intent.putExtra("addedAudioFile",s); //for single file no array is passed right now
Log.e("AUDIO_VIDEO FILE=====",s);
setResult(RESULT_OK,intent);
finish();
}
Ceci est une partie de la tâche asynch. Maintenant, l'autre activité où je reçois le fichier est:
//getting the files after adding some changes to the selected video
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
switch (requestCode) {
case CustomizeVideo:
if (resultCode == RESULT_OK) {
String customVideoReceived = data.getExtras().getString("addedAudioFile");
Log.e("GETTING IT=====", customVideoReceived);
File file = new File(customVideoReceived);
Log.e("FILE_CHECK",file.toString());
if (file.exists()) {
//for starting the video activity
mVideoView.setVideoPath(customVideoReceived);
mController = new MediaController(EditVideoActivity.this);
mController.setMediaPlayer(mVideoView);
mVideoView.setMediaController(mController);
mVideoView.requestFocus();
mVideoView.start();
} else {
Toast.makeText(getApplicationContext(), "Cannot play the file!", Toast.LENGTH_SHORT)
.show();
Toast.makeText(getApplicationContext(), "File does not merged successfully", Toast.LENGTH_SHORT)
.show();
}
}
}
}
Mais tout ce que je reçois est la instruction else mis en œuvre
résultats du journal:
08-23 17:23:39.818 3369-3369/in.pinelane.myhovi E/AUDIO_VIDEO FILE=====: /storage/emulated/0/HovieAddTrack.mp4
08-23 17:23:39.831 3369-3369/in.pinelane.myhovi E/GETTING IT=====: /storage/emulated/0/HovieAddTrack.mp4
08-23 17:23:39.831 3369-3369/in.pinelane.myhovi E/FILE_CHECK: /storage/emulated/0/HovieAddTrack.mp4
Le journal vous pouvez voir clairement que le chemin du fichier est là mais le si l'instruction n'est pas mise en œuvre
Et j'ai vérifié le fichier dans la mémoire de l'appareil, il est là et enregistré je peux le lire, le fichier fonctionne très bien.
S'il vous plaît donner une suggestion valable afin que je puisse aller plus loin. Merci
En outre, j'ai l'autorisation dans mon manifeste pour WRITE_EXTERNAL_DATA et READ_EXTERNAL_DATA.
Permet de modifier
Je l'ai implémenté avec succès, le problème était nom_du_canvas, le chemin n'a pas été spécifié correctement si le problème est survenu. Sinon, cela fonctionnait bien. Merci pour l'énorme soutien. J'ai appris ma leçon.
Je vois '' onPostExecute'' qui me dit que vous créez/rendez le fichier async, ce qui est bien. Est-il possible que le fichier n'ait pas été écrit/validé au moment où vous l'interrogez (quelques millis peuvent faire la différence)? Cela peut sembler stupide au début, mais essayez juste un sommeil 1000 tout à fait simple ou quelque chose de similaire avant de tester si le fichier existe. Si cela fait une différence, vous avez au moins un point pour commencer votre recherche, où vous devez vider le fichier ou comment le conserver à temps. – Grisgram
essayez d'ajouter le fichier: ou le fichier: // dans le chemin avant la déclaration de l'objet fichier – pkgrover
Quelle est la valeur de String s? Et avez-vous utilisé file.exists() dans onPostExecute()? Non? Alors faites d'abord. – greenapps