L'appareil photo n'enregistre pas après avoir pris l'image dans Redmi 1s. Cela fonctionne très bien dans samsung j5-2016. J'essaie de prendre des photos et de télécharger sur le serveur. Avant de télécharger je suis en train de compresser l'image, donc j'ai besoin de nom de fichier et de chemin de fichier. Comment je reçois fileName est affiche dans la méthode de résultat d'activité.L'appareil photo n'épargne pas après la prise de l'image
Caméra Intention
val takePictureIntent = Intent(MediaStore.ACTION_IMAGE_CAPTURE)
if (takePictureIntent.resolveActivity(activity.packageManager) != null) {
startActivityForResult(takePictureIntent, 102)
}
Dans téléphone samsung cela permet d'économiser l'image, donc je suis en mesure d'obtenir le fichier de uri. Mais à Redmi 1s je ne suis pas en mesure d'obtenir uri. Je pense qu'il semble que redmi ne sauve pas l'image prise, donc je ne suis pas en mesure d'obtenir le fichier. onActivityResult en fragments affiche comme:
override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) {
super.onActivityResult(requestCode, resultCode, data)
if (requestCode == 102) && resultCode == Activity.RESULT_OK && data != null) {
val uri = data.data
val mimeType = activity.contentResolver.getType(uri)
if (mimeType == null) {
val path = getPath(uri)
if (path == null) {
fileName = FilenameUtils.getName(uri.toString())
} else {
val file = File(path)
fileName = file.getName()
}
} else {
val returnUri = data.getData()
val returnCursor = activity.contentResolver.query(returnUri, null, null, null, null)
val nameIndex = returnCursor.getColumnIndex(OpenableColumns.DISPLAY_NAME)
val sizeIndex = returnCursor.getColumnIndex(OpenableColumns.SIZE)
returnCursor.moveToFirst()
fileName = returnCursor.getString(nameIndex)
val size = Long.toString(returnCursor.getLong(sizeIndex));
}
}
}
j'obtiens erreur dans
val mimeType = activity.contentResolver.getType(uri)
ErrorLog
08-23 17:17:52.039 12008-12008/? W/System.err: java.lang.NullPointerException
08-23 17:17:52.039 12008-12008/? W/System.err: at android.content.ContentResolver.acquireExistingProvider(ContentResolver.java:1405)
08-23 17:17:52.039 12008-12008/? W/System.err: at android.content.ContentResolver.getType(ContentResolver.java:304)
08-23 17:17:52.039 12008-12008/? W/System.err: at in.motiontech.wave.fragment.ReviewOrderFragment.onActivityResult(ReviewOrderFragment.kt:396)
08-23 17:17:52.039 12008-12008/? W/System.err: at android.support.v4.app.FragmentActivity.onActivityResult(FragmentActivity.java:164)
08-23 17:17:52.039 12008-12008/? W/System.err: at android.app.Activity.dispatchActivityResult(Activity.java:5434)
08-23 17:17:52.039 12008-12008/? W/System.err: at android.app.ActivityThread.deliverResults(ActivityThread.java:3363)
08-23 17:17:52.039 12008-12008/? W/System.err: at android.app.ActivityThread.handleSendResult(ActivityThread.java:3410)
08-23 17:17:52.039 12008-12008/? W/System.err: at android.app.ActivityThread.access$1300(ActivityThread.java:141)
08-23 17:17:52.039 12008-12008/? W/System.err: at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1260)
08-23 17:17:52.039 12008-12008/? W/System.err: at android.os.Handler.dispatchMessage(Handler.java:102)
08-23 17:17:52.039 12008-12008/? W/System.err: at android.os.Looper.loop(Looper.java:136)
08-23 17:17:52.049 12008-12008/? W/System.err: at android.app.ActivityThread.main(ActivityThread.java:5052)
08-23 17:17:52.049 12008-12008/? W/System.err: at java.lang.reflect.Method.invokeNative(Native Method)
08-23 17:17:52.049 12008-12008/? W/System.err: at java.lang.reflect.Method.invoke(Method.java:515)
08-23 17:17:52.049 12008-12008/? W/System.err: at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:796)
08-23 17:17:52.049 12008-12008/? W/System.err: at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:612)
08-23 17:17:52.049 12008-12008/? W/System.err: at dalvik.system.NativeStart.main(Native Method)
Aidez-moi si je fais quelque chose de mal s'il vous plaît suggérer autre opt ion.
J'ai également regardé certains postes Stackoverflow mais pas en mesure de trouver réponse:
Camera Intent not saving photo
Camera is not saving after taking picture
Can not save camera's captured photo in application's "files" folder
Modifier J'ai aussi essayé suivante pour Caméra intention
val takePictureIntent = Intent(MediaStore.ACTION_IMAGE_CAPTURE)
val dir = Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DCIM)
var output = File(dir, System.currentTimeMillis().toString() + ".jpeg")
if (takePictureIntent.resolveActivity(activity.packageManager) != null) {
takePictureIntent.putExtra(MediaStore.EXTRA_OUTPUT, output)
startActivityForResult(takePictureIntent, 102)
}
Merci pour votre réponse, veuillez vérifier mon édition –
@LalitJadav: Avez-vous ajusté votre 'onActivityResult()' pour regarder à l'emplacement que vous avez fourni à 'EXTRA_OUTPUT'? – CommonsWare
Je pense qu'il renvoie uri .. –