Je suis en train de construire une application de caméra simple dans Android, ce qui lancerait une caméra intentionnellement sur le clic d'un bouton. L'intention de la caméra doit alors cliquer sur une image qui sera affichée ultérieurement dans ImageView présent dans MainActivity. Le problème est cependant que je suis capable de capturer l'image, mais dès que l'image est capturée au lieu d'afficher l'image, l'application se bloque soudainement.Impossible de récupérer l'image capturée de la caméra
Voici mon code pour l'application:
MainActivity.java
package com.example.suzancruz.cameraapplicaton;
import android.content.Intent;
import android.graphics.Bitmap;
import android.provider.MediaStore;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.ImageView;
public class MainActivity extends AppCompatActivity {
static final int REQUEST_IMAGE_CAPTURE = 123;
ImageView myImageView;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
}
//Launching the camera
public void launchCamera(View view){
Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
//Take a picture and pass results along to onActivityResult
startActivityForResult(intent, REQUEST_IMAGE_CAPTURE);
}
//If you want to return the image taken
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
if(requestCode == REQUEST_IMAGE_CAPTURE && resultCode == RESULT_OK){
//Get the photo
Bundle extras = data.getExtras();
Bitmap photo = (Bitmap) extras.get("data");
myImageView.setImageBitmap(photo);
}
}
}
activity_main.xml
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/activity_main"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
android:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
tools:context="com.example.suzancruz.cameraapplicaton.MainActivity">
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:onClick="launchCamera"
android:layout_alignParentBottom="true"
android:layout_centerHorizontal="true"
android:text="Take Picture"
/>
<ImageView
android:layout_width="300dp"
android:layout_height="300dp"
android:id="@+id/myImageView"
/>
</RelativeLayout>
AndroidManifest.xml
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.example.suzancruz.cameraapplicaton">
<application
android:allowBackup="true"
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:supportsRtl="true"
android:theme="@style/AppTheme">
<activity android:name=".MainActivity">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<uses-feature android:name="android.hardware.camera2"></uses-feature>
<uses-permission android:name="android.permission.CAMERA"/>
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
</application>
</manifest>
Que dit votre rapport de panne? – Piyush
@Piyush, Causée par: java.lang.NullPointerException: à la ligne "myImageView.setImageBitmap (photo);" –
Vous avez oublié d'initialiser votre 'myImageView' – Piyush