| auteur : Le Trocquer Mickaël |
Voici un bout de code permettant de lister tous les Sensors disponibles sur le système :
Valide 1.5 |
SensorManager m_SensorMgr = (SensorManager) m_Context.getSystemService (Context.SENSOR_SERVICE);
List< Sensor> listSensor = m_SensorMgr.getSensorList (Sensor.TYPE_ALL);
for (Sensor sen : listSensor) {
Log.d (" Sensor " ,sen.getName ());
}
|
Par exemple si vous souhaitez utiliser l'accéléromètre : Valide 1.5 |
Sensor m_AcceloSensor = m_SensorMgr.getDefaultSensor (Sensor.TYPE_ACCELEROMETER);
|
|
| auteur : Le Trocquer Mickaël |
Voici une méthode pour prendre une photo en utilisant l'appareil photo disponible sur le téléphone :
Valide 1.5 |
private void doTakePhotoAction () {
Intent intent = new Intent (MediaStore.ACTION_IMAGE_CAPTURE);
File fTmp = new File (Environment.getExternalStorageDirectory ()," tmp_contact_ " + String.valueOf (System.currentTimeMillis ()) + " .jpg " )
mImageCaptureUri = Uri.fromFile (fTmp);
intent.putExtra (android.provider.MediaStore.EXTRA_OUTPUT, mImageCaptureUri);
try {
intent.putExtra (" return-data " , true );
startActivityForResult (intent, PICK_FROM_CAMERA);
} catch (ActivityNotFoundException e) {
Log.e (" doTakePhotoAction " , e);
}
}
protected void onActivityResult (int requestCode, int resultCode, Intent data) {
if (resultCode ! = RESULT_OK) {
return ;
}
switch (requestCode) {
case CROP_FROM_CAMERA: {
final Bundle extras = data.getExtras ();
if (extras ! = null ) {
Bitmap photo = extras.getParcelable (" data " );
mPhoto = photo;
mPhotoChanged = true ;
mPhotoImageView.setImageBitmap (photo);
setPhotoPresent (true );
}
File f = new File (mImageCaptureUri.getPath ());
if (f.exists ()) {
f.delete ();
}
InputMethodManager mgr = (InputMethodManager) getSystemService (Context.INPUT_METHOD_SERVICE);
mgr.showSoftInput (mPhotoImageView, InputMethodManager.SHOW_IMPLICIT);
break ;
}
case PICK_FROM_CAMERA: {
Intent intent = new Intent (" com.android.camera.action.CROP " );
intent.setClassName (" com.android.camera " , " com.android.camera.CropImage " );
intent.setData (mImageCaptureUri);
intent.putExtra (" outputX " , 96 );
intent.putExtra (" outputY " , 96 );
intent.putExtra (" aspectX " , 1 );
intent.putExtra (" aspectY " , 1 );
intent.putExtra (" scale " , true );
intent.putExtra (" return-data " , true );
startActivityForResult (intent, CROP_FROM_CAMERA);
break ;
}
}
}
|
|
| auteur : Le Trocquer Mickaël |
Voici un code basique permettant d'afficher la prévisualisation vidéo de la caméra dans un composant :
Valide 1.5 |
public class CustomCameraView extends SurfaceView implements SurfaceHolder.Callback {
SurfaceHolder holder;
Camera camera;
public CustomCameraView (Context context) {
super (context);
setId (ID_CAMERA_VIEW);
holder = this .getHolder ();
holder.setType (SurfaceHolder.SURFACE_TYPE_PUSH_BUFFERS);
holder.addCallback (this );
}
@ Override
public void surfaceCreated (SurfaceHolder holder) {
camera = Camera.open ();
try {
camera.setPreviewDisplay (holder);
} catch (Exception e) {
e.printStackTrace ();
}
}
@ Override
public void surfaceChanged (SurfaceHolder holder, int format, int width, int height) {
Parameters params = camera.getParameters ();
camera.setParameters (params);
camera.startPreview ();
}
@ Override
public void surfaceDestroyed (SurfaceHolder holder) {
camera.stopPreview ();
camera.release ();
}
}
|
|
| auteur : Le Trocquer Mickaël |
Voici un exemple de code permettant d'initialiser et de récupérer les coordonnées GPS :
Valide 1.5 |
LocationManager locationManager = (LocationManager)context.getSystemService (Context.LOCATION_SERVICE);
LocationListener gpsListener = new LocationListener () {
@ Override
public void onLocationChanged (Location location) {
}
@ Override
public void onProviderDisabled (String arg0) {
}
@ Override
public void onProviderEnabled (String arg0) {
}
@ Override
public void onStatusChanged (String arg0, int arg1, Bundle arg2) {
}
} ;
Criteria criteria = new Criteria ();
criteria.setAccuracy (Criteria.ACCURACY_FINE);
criteria.setAltitudeRequired (false );
criteria.setBearingRequired (false );
criteria.setCostAllowed (true );
criteria.setPowerRequirement (Criteria.POWER_MEDIUM);
locationManager.requestLocationUpdates (locationManager.getBestProvider (criteria, true ), 100 , 1 , gpsListener);
|
|
| auteur : Le Trocquer Mickaël |
Voici comment obtenir des informations sur la boussole :
Valide 1.5 |
SensorEventListener sensorListener = new SensorEventListener (){
@ Override
public void onSensorChanged (SensorEvent evt) {
float values[] = evt.values;
if (evt.sensor.getType () = = Sensor.TYPE_ORIENTATION) {
int azimuth = int ) values[0 ];
int pitch = (int ) values[1 ];
int roll = (int ) values[2 ];
}
}
@ Override
public void onAccuracyChanged (Sensor sensor, int accuracy){
}
} ;
SensorManager sensorManager = (SensorManager) context.getSystemService (Context.SENSOR_SERVICE);
sensorManager.registerListener (sensorListener,sensorManager.getDefaultSensor (Sensor.TYPE_ORIENTATION),SensorManager.SENSOR_DELAY_FASTEST);
|
|
| auteur : Le Trocquer Mickaël |
Tout d'abord, il faut initialiser le sensor.
Ensuite, il faut utiliser le listener qui se chargera de traiter les informations provenant de l'accéléromètre :
Valide 1.5 |
MonListener acceleroListener = new MonListener ();
boolean accelSupported = m_SensorMgr.registerListener (this , m_AcceloSensor, SENSOR_DELAY_GAME);
if (! accelSupported) {
Log.e (TAG, " Acceleromètre inactif " );
m_SensorMgr.unregisterListener (this , m_AcceloSensor);
}
|
Et voici le code du listener :
Valide 1.5 |
public class MonListener implements SensorEventListener {
publoc boolean m_SensorOnPause = false ;
private long m_LastSensorUpdate = - 1 ;
public MonListener () {
}
@ Override
public void onAccuracyChanged (Sensor sensor, int accuracy) { }
@ Override
public void onSensorChanged (SensorEvent event) {
if (m_SensorOnPause) {
return ;
}
float dirX;
float dirY;
if (event.sensor.getType () = = Sensor.TYPE_ACCELEROMETER) {
long curTime = System.currentTimeMillis ();
if (m_LastSensorUpdate = = - 1 | | (curTime - m_LastSensorUpdate) > 30 ) {
m_LastSensorUpdate = curTime;
dirX = event.values[DATA_X];
dirY = event.values[DATA_Y];
}
}
}
}
|
|
| auteur : Le Trocquer Mickaël |
La classe MediaRecorder permet de gérer les enregistrements audio et vidéo.
On peut définir le format d'enregistrement (setOutputFormat) ainsi que l'encodage du flux (setAudioEncoder).
Valide 1.5 |
private MediaRecorder recorder;
public void StartRecording () {
Log.d (" StartRecording " , " On lance l'enregistrement " );
recorder = new MediaRecorder ();
recorder.setAudioSource (MediaRecorder.AudioSource.MIC);
recorder.setOutputFormat (MediaRecorder.OutputFormat.THREE_GPP);
recorder.setAudioEncoder (MediaRecorder.AudioEncoder.AMR_NB);
recorder.setOutputFile (path_file);
try {
recorder.prepare ();
} catch (IllegalStateException e) {
Log.e (" StartRecording " , " IllegalStateException " + e.getMessage ());
e.printStackTrace ();
} catch (IOException e) {
Log.e (" StartRecording " , " IOException " + e.getMessage ());
e.printStackTrace ();
}
recorder.start ();
}
public void StopRecording () {
Log.e (" StopRecording " , " On stop l'enregistrement " );
recorder.stop ();
recorder.reset ();
recorder.release ();
}
|
|
| auteur : Le Trocquer Mickaël |
Voici une méthode pour prendre une photo en utilisant l'appareil photo disponible sur le téléphone.
La photo est stockée dans le Canvas lors de l'appel à la méthode "capture".
Valide 1.5 |
private CameraDevice device = null ;
private int width = 320 ;
private int height = 240 ;
public boolean open () {
if (device ! = null ) return true ;
device = CameraDevice.open ();
if (device = = null ) return false ;
CameraDevice.CaptureParams param = new CameraDevice.CaptureParams ();
param.type = 1 ;
param.srcWidth = 1280 ;
param.srcHeight = 960 ;
param.leftPixel = 0 ;
param.topPixel = 0 ;
param.outputWidth = width;
param.outputHeight = height;
param.dataFormat = 2 ;
if (! device.setCaptureParams (param)) {
device.close ();
device = null ;
return false ;
}
return true ;
}
public void close () {
if (device = = null ) return ;
device.close ();
device = null ;
}
public boolean capture (Canvas canvas) {
if (device = = null ) {
return false ;
}
return device.capture (canvas);
}
|
|
Consultez les autres F.A.Q's
Les sources présentés sur cette page sont libres de droits,
et vous pouvez les utiliser à votre convenance. Par contre cette page de présentation de ces sources constitue une oeuvre intellectuelle protégée par les droits d'auteurs.
Copyright ©2010
Developpez LLC. Tous droits réservés Developpez LLC.
Aucune reproduction, même partielle, ne peut être faite de ce site et de
l'ensemble de son contenu : textes, documents et images sans l'autorisation
expresse de Developpez LLC. Sinon vous encourez selon la loi jusqu'à 3 ans
de prison et jusqu'à 300 000 E de dommages et intérêts.
Cette page est déposée à la SACD.
|