Aller au contenu

Problème de compatibilité d'application


Blaxh404

Recommended Posts

Bonsoir à tous,

J'ai fais une application pour mon device HTC Sensation qui est censé utilisé uniquement les capteurs du téléphones et afficher si ils sont présents ou pas.

J'ai suivi exactement le tuto et mon application ne marche pas sur mon android 2.3.4

Le tuto est fait sur 1.6 et quand je teste sur l'émulateur 1.6 l'application marche bel et bien.

Comment se fait-il qu'il pourrait y avoir un problème de compatibilité? L'application est pourtant pas bien grande ... Et donc pas bien compliquée.

Quelqu'un connaîtrait la solution?

Merci d'avance

Lien vers le commentaire
Partager sur d’autres sites

Mouahaha !!! Je suis en train de dev exactement la même chose xD

En revanche, pas de problème de mon côté (mais je ne suis pas de tuto donc il y a une différence entre nos codes, assurément ^^). Et je suis sur HTC Desire (donc on peut dire qu'il y a de fortes chances pour que l'architecture ait des similitudes :) ).

Peux-tu mettre un bout de ton code ?

Quelles sensors testes-tu ?

Lien vers le commentaire
Partager sur d’autres sites

Merci pour ta réponse !

oui sans problème je te donne tout t'y verra peut-être plus clair donc je teste ces capteurs:

- TYPE_ACCELEROMETER

- TYPE_ORIENTATION

- TYPE_MAGNETIC_FIELD

- TYPE_TEMPERATURE

- TYPE_PROXIMITY

- TYPE_LIGHT

Voila le code dans mon fichier Main.java. C'est assez long mais aufait c'est toujours la même chose :

package com.formation.sensor;

import android.app.Activity;
import android.hardware.Sensor;
import android.hardware.SensorEvent;
import android.hardware.SensorEventListener;
import android.hardware.SensorManager;
import android.os.Bundle;
import android.widget.TextView;

public class Main extends Activity implements SensorEventListener {
   /** Called when the activity is first created. */
   @Override
   public void onCreate(Bundle savedInstanceState) {
       super.onCreate(savedInstanceState);
       setContentView(R.layout.main);

       SensorManager sensorMgr = (SensorManager) getSystemService(SENSOR_SERVICE);

       boolean accelSupported = sensorMgr.registerListener(this, sensorMgr.getDefaultSensor(Sensor.TYPE_ACCELEROMETER),SensorManager.SENSOR_DELAY_UI);
       if(!accelSupported){
       	sensorMgr.unregisterListener(this, sensorMgr.getDefaultSensor(Sensor.TYPE_ACCELEROMETER));
       	((TextView)findViewById(R.id.acc)).setText("Pas d'accelerometre");
       }

       boolean OrientSupported = sensorMgr.registerListener(this,sensorMgr.getDefaultSensor(Sensor.TYPE_ORIENTATION),SensorManager.SENSOR_DELAY_UI);
	if (!OrientSupported) {
		sensorMgr.unregisterListener(this,sensorMgr.getDefaultSensor(Sensor.TYPE_ORIENTATION));
		((TextView)this.findViewById(R.id.ori)).setText("Pas d'orientation");
	}

       boolean MagnetSupported = sensorMgr.registerListener(this,sensorMgr.getDefaultSensor(Sensor.TYPE_MAGNETIC_FIELD),SensorManager.SENSOR_DELAY_UI);
	if (!MagnetSupported) {
		sensorMgr.unregisterListener(this,sensorMgr.getDefaultSensor(Sensor.TYPE_MAGNETIC_FIELD));
		((TextView)this.findViewById(R.id.mag)).setText("Pas de champ magnetique");
	}

       boolean TempSupported = sensorMgr.registerListener(this,sensorMgr.getDefaultSensor(Sensor.TYPE_TEMPERATURE),SensorManager.SENSOR_DELAY_UI);
	if (!TempSupported) {
		sensorMgr.unregisterListener(this,sensorMgr.getDefaultSensor(Sensor.TYPE_TEMPERATURE));
		((TextView)this.findViewById(R.id.tem)).setText("Pas de temperature");
	}

	boolean ProxSupported = sensorMgr.registerListener(this,sensorMgr.getDefaultSensor(Sensor.TYPE_PROXIMITY),SensorManager.SENSOR_DELAY_UI);
	if (!ProxSupported) {
		sensorMgr.unregisterListener(this,sensorMgr.getDefaultSensor(Sensor.TYPE_PROXIMITY));
		((TextView)this.findViewById(R.id.pro)).setText("Pas de proximité");
	}

	boolean LiteSupported = sensorMgr.registerListener(this,sensorMgr.getDefaultSensor(Sensor.TYPE_LIGHT),SensorManager.SENSOR_DELAY_UI);
	if (!LiteSupported) {
		sensorMgr.unregisterListener(this,sensorMgr.getDefaultSensor(Sensor.TYPE_LIGHT));
		((TextView)this.findViewById(R.id.lit)).setText("Pas de lumiere");
	}

   }

@Override
public void onAccuracyChanged(Sensor sensor, int accuracy) {
	// TODO Auto-generated method stub

}

@Override
public void onSensorChanged(SensorEvent event) {
	switch(event.sensor.getType()){
	case Sensor.TYPE_ACCELEROMETER:
		onAccelerometerChanged(event);
		break;
	case Sensor.TYPE_ORIENTATION:
		onOrientationChanged(event);
		break;
	case Sensor.TYPE_MAGNETIC_FIELD:
		onMagneticFieldChanged(event);
		break;
	case Sensor.TYPE_TEMPERATURE:
		onTemperatureChanged(event);
		break;
	case Sensor.TYPE_PROXIMITY:
		onProximityChanged(event);
		break;
	case Sensor.TYPE_LIGHT:
		onLightChanged(event);
		break;
	}	
}

private void onLightChanged(SensorEvent event){
	float x;
	x = event.values[0];				
	((TextView)this.findViewById(R.id.litex)).setText("LitX:"+x);
}

private void onProximityChanged(SensorEvent event){
	float x;
	x = event.values[0];				
	((TextView)this.findViewById(R.id.prox)).setText("Prox:"+x);
}

private void onTemperatureChanged(SensorEvent event){
	float temp;
	temp = event.values[0];				
	((TextView)this.findViewById(R.id.temp)).setText("Temp:"+temp);
}

private void onAccelerometerChanged(SensorEvent event){
	float x,y,z;
	x = event.values[0];
	y = event.values[1];
	z = event.values[2];				
	((TextView)this.findViewById(R.id.axex)).setText("AxeX:"+x);
	((TextView)this.findViewById(R.id.axey)).setText("AxeY:"+y);
	((TextView)this.findViewById(R.id.axez)).setText("AxeZ:"+z);
}

private void onOrientationChanged(SensorEvent event){
	float azimuth,pitch,roll;
	azimuth = event.values[0];
	pitch   = event.values[1];
	roll    = event.values[2];
	((TextView)this.findViewById(R.id.azimuth)).setText("Azimuth:"+azimuth);
	((TextView)this.findViewById(R.id.pitch)).setText("Pitch:"+pitch);
	((TextView)this.findViewById(R.id.roll)).setText("Roll:"+roll);
}

private void onMagneticFieldChanged(SensorEvent event){
	float uTx,uTy,uTz;
	uTx = event.values[0];
	uTy = event.values[1];
	uTz = event.values[2];			
	((TextView)this.findViewById(R.id.uTx)).setText("µTesla X:"+uTx);
	((TextView)this.findViewById(R.id.uTy)).setText("µTesla Y:"+uTy);
	((TextView)this.findViewById(R.id.uTz)).setText("µTesla Z:"+uTz);
}

}

ICI mon fichier dans les layout (.xml)

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
   android:orientation="vertical"
   android:layout_width="fill_parent"
   android:layout_height="fill_parent"
   >

<TextView android:layout_width="fill_parent" android:layout_height="wrap_content" android:text=">> Accélérometre actif" android:id="@+id/acc"/>
<TextView android:layout_width="fill_parent" android:layout_height="wrap_content" android:text="" android:id="@+id/axex" />
<TextView android:layout_width="fill_parent" android:layout_height="wrap_content" android:text="" android:id="@+id/axey" />
<TextView android:layout_width="fill_parent" android:layout_height="wrap_content" android:text="" android:id="@+id/axez" />

<TextView android:layout_width="fill_parent" android:layout_height="wrap_content" android:text=">> Orientation actif" android:id="@+id/ori"/>
<TextView android:layout_width="fill_parent" android:layout_height="wrap_content" android:text="" android:id="@+id/azimuth" />
<TextView android:layout_width="fill_parent" android:layout_height="wrap_content" android:text="" android:id="@+id/pitch" />
<TextView android:layout_width="fill_parent" android:layout_height="wrap_content" android:text="" android:id="@+id/roll" />

<TextView android:layout_width="fill_parent" android:layout_height="wrap_content" android:text=">> Boussole active" android:id="@+id/mag"/>
<TextView android:layout_width="fill_parent" android:layout_height="wrap_content" android:text="" android:id="@+id/uTx" />
<TextView android:layout_width="fill_parent" android:layout_height="wrap_content" android:text="" android:id="@+id/uTy" />
<TextView android:layout_width="fill_parent" android:layout_height="wrap_content" android:text="" android:id="@+id/uTz" />

<TextView android:layout_width="fill_parent" android:layout_height="wrap_content" android:text=">> Température active" android:id="@+id/tem"/>
<TextView android:layout_width="fill_parent" android:layout_height="wrap_content" android:text="" android:id="@+id/temtext" />

<TextView android:layout_width="fill_parent" android:layout_height="wrap_content" android:text=">> Capteur de proximité actif" android:id="@+id/pro"/>
<TextView android:layout_width="fill_parent" android:layout_height="wrap_content" android:text="" android:id="@+id/protext" />

<TextView android:layout_width="fill_parent" android:layout_height="wrap_content" android:text=">> Capteur de lumière actif" android:id="@+id/lit"/>
<TextView android:layout_width="fill_parent" android:layout_height="wrap_content" android:text="" android:id="@+id/litext" />

<TextView android:layout_width="fill_parent" android:layout_height="wrap_content" android:text=">> Capteur de pression actif" android:id="@+id/pres"/>
<TextView android:layout_width="fill_parent" android:layout_height="wrap_content" android:text="" android:id="@+id/prestext" />

</LinearLayout>

ET là le manifest

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
     package="com.formation.sensor"
     android:versionCode="1"
     android:versionName="1.0">
   <uses-sdk android:minSdkVersion="10" />

   <application android:icon="@drawable/icon" android:label="@string/app_name">
       <activity android:name=".Main"
                 android:label="@string/app_name">
           <intent-filter>
               <action android:name="android.intent.action.MAIN" />
               <category android:name="android.intent.category.LAUNCHER" />
           </intent-filter>
       </activity>

   </application>
</manifest>

Voila, j'attend ta réponse avec impatience :)

Lien vers le commentaire
Partager sur d’autres sites

Bonsoir à tous,

J'ai fais une application pour mon device HTC Sensation qui est censé utilisé uniquement les capteurs du téléphones et afficher si ils sont présents ou pas.

J'ai suivi exactement le tuto et mon application ne marche pas sur mon android 2.3.4

Le tuto est fait sur 1.6 et quand je teste sur l'émulateur 1.6 l'application marche bel et bien.

Comment se fait-il qu'il pourrait y avoir un problème de compatibilité? L'application est pourtant pas bien grande ... Et donc pas bien compliquée.

Quelqu'un connaîtrait la solution?

Merci d'avance

En tout cas cela fonctionne très bien sur mon DEFY en 2.2.2

C'est étrange, car il n'y a pas eu de modification de l'API sensor (à part l'ajout de la prise en compte du gyro) entre la 2.2.2 et la 2.3.4

As tu essayé avec l'émulateur en 2.3.4 ?

Lien vers le commentaire
Partager sur d’autres sites

Salut !

Je n'ai pas la possibilité de tester pour le moment mais je tic sur ton manifest. Tu indiques un minSDK à 10 et cela fonctionne sur l'émulateur en version 4 du SDK \o/

Je ne pense pas que cela vienne de là mais c'était pour le clin d'oeil.

Je me pencherai plus sur le code ce soir après le taff ;)

EDIT : Ah oui, aussi, pour ma part, j'utilise getSensorList(int type) avec TYPE_ALL comme type pour récupérer la liste des sensors disponibles. Je dis ça juste à titre indicatif ;)

Lien vers le commentaire
Partager sur d’autres sites

D'accord mais en principe mon code devrait marcher non? J'ai pas essayé sous 2.3.4 parce que j'ai pas la version, mais ça devrait quand meme marcher sous 2.3.3 non? (mon émulateur actuel)

Oui oui, je suis d'accord, ça marchait en 1.6, je ne vois pas pourquoi ça ne marche pas. Aucune idée, désole :emo_im_undecided:

Lien vers le commentaire
Partager sur d’autres sites

Mince ... pourtant c'est étrange parce que c'est pas la seule application qui bug comme. J'en ai fait une qui utilise l'appareil photo et elle marche pas non plus, elle renvoie la meme erreur :(

Merci quand même mais sinon :

*APPEL A L'AIDE* :/

Lien vers le commentaire
Partager sur d’autres sites

Archivé

Ce sujet est désormais archivé et ne peut plus recevoir de nouvelles réponses.

×
×
  • Créer...