Accueil
Club Emploi Blogs   TV   Dév. Web PHP XML Python Autres 2D-3D-Jeux Sécurité Windows Linux PC Mac
Accueil Conception Java DotNET Visual Basic  C  C++ Delphi Eclipse MS-Office SQL & SGBD Oracle  4D  Business Intelligence
logo



Comment lister les « sensors » disponibles sur l'appareil ?
auteur : Le Trocquer Mickaël
Voici un bout de code permettant de lister tous les Sensors disponibles sur le système :
Valide 1.5

//Initialisation du manager
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);

Comment prendre une photo avec l'appareil photo en utilisant l'action Android ?
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() {
    // http://2009.hfoss.org/Tutorial:Camera_and_Gallery_Demo
    // http://stackoverflow.com/questions/1050297/how-to-get-the-url-of-the-captured-image
    // http://www.damonkohler.com/2009/02/android-recipes.html
    // http://www.firstclown.us/tag/android/
    // The one I used to get everything working: http://groups.google.com/group/android-developers/msg/2ab62c12ee99ba30

    Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);

    //Wysie_Soh: Create path for temp file
    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: {
            //Wysie_Soh: After a picture is taken, it will go to PICK_FROM_CAMERA, which will then come here
            //after the image is cropped.

            final Bundle extras = data.getExtras();

            if (extras != null) {
                Bitmap photo = extras.getParcelable("data");

                mPhoto = photo;
                mPhotoChanged = true;
                mPhotoImageView.setImageBitmap(photo);
                setPhotoPresent(true);
            }

            //Wysie_Soh: Delete the temporary file
            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: {
            //Wysie_Soh: After an image is taken and saved to the location of mImageCaptureUri, come here
            //and load the crop editor, with the necessary parameters (96x96, 1:1 ratio)

            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;

        }
    }
}

Comment afficher la vidéo issue de la caméra ?
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();
    }
}

Comment obtenir les coordonnées GPS ?
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

//gps system
LocationManager locationManager = (LocationManager)context.getSystemService(Context.LOCATION_SERVICE);
LocationListener gpsListener = new LocationListener() {
    @Override
    public void onLocationChanged(Location location) {
        //TODO : faire quelques choses avec les nouvelles coordonnées
    }

    @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);  

Comment obtenir les données de la boussole ?
auteur : Le Trocquer Mickaël
Voici comment obtenir des informations sur la boussole :
Valide 1.5


//orientation sensor
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];
            //TODO : faire quelques choses avec ces valeurs
          
        }
    }
            
    @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); 

Comment obtenir les informations de l'accéléromètre ?
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();
//Initialisation de l'accélèromètre
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();
            // On autorise uniquement les mise à jours toutes les 50ms, sinon c'est trop rapide
            if (m_LastSensorUpdate == -1 || (curTime - m_LastSensorUpdate) > 30) {
                m_LastSensorUpdate = curTime;
                dirX = event.values[DATA_X];
                dirY = event.values[DATA_Y];

                //TODO : faire quelques choses avec les données...
                //....
            }
        }

    }
}

Comment enregistrer un son ?
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();   // Recording is now started
}


public void StopRecording() {
    Log.e("StopRecording", "On stop l'enregistrement");
    recorder.stop();
    recorder.reset();   // You can reuse the object by going back to setAudioSource() step
    recorder.release(); // Now the object cannot be reused
}

Comment prendre une photo avec l'appareil photo ?
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;
        
    //parameters for the device mostly as specified in sample app
    CameraDevice.CaptureParams param = new CameraDevice.CaptureParams();
    param.type = 1; // preview
    param.srcWidth = 1280;
    param.srcHeight = 960;
    param.leftPixel = 0;
    param.topPixel = 0;
    param.outputWidth = width;
    param.outputHeight = height;
    param.dataFormat = 2; // RGB_565
    
    //attempt to configure the device here
    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.

Vos questions techniques : forum d'entraide Accueil - Publiez vos articles, tutoriels, cours et rejoignez-nous dans l'équipe de rédaction du club d'entraide des développeurs francophones. Nous contacter - Copyright 2000..2005 www.developpez.com