Desde la actualización de OTA a Marshmallow mi aplicación basada en giroscopio ya no funciona

He actualizado mi Nexus 5 a Marshmallow con OTA. Dado que la actualización de la actividad basada en sensores sencilla ya no funciona. El siguiente código hace lo que debe hacer en otros dispositivos (Galaxy S4 Lolipop, AVD, …)

¿Alguien ha experimentado esto también? ¿Extraño algo?

Aquí está el código:

Construir un gradiente

apply plugin: 'com.android.application' android { compileSdkVersion 22 buildToolsVersion "23.0.1" defaultConfig { applicationId "fr.rouk1.test" minSdkVersion 16 targetSdkVersion 23 versionCode 1 versionName "1.0" } buildTypes { release { minifyEnabled false proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' } } } dependencies { compile fileTree(dir: 'libs', include: ['*.jar']) testCompile 'junit:junit:4.12' } 

AndroidManifest.xml

 <?xml version="1.0" encoding="utf-8"?> <manifest package="fr.rouk1" xmlns:android="http://schemas.android.com/apk/res/android"> <uses-feature android:name="android.hardware.sensor.gyroscope" android:required="true"/> <uses-feature android:name="android.hardware.sensor.accelerometer" android:required="true"/> <uses-feature android:name="android.hardware.sensor.compass" android:required="true"/> <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> </application> </manifest> 

MainActivity.java

 package fr.rouk1; import android.app.Activity; import android.content.Context; import android.hardware.Sensor; import android.hardware.SensorEvent; import android.hardware.SensorEventListener; import android.hardware.SensorManager; import android.os.Bundle; import android.util.Log; import android.widget.TextView; public class MainActivity extends Activity implements SensorEventListener { private TextView mText; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); mText = (TextView) findViewById(R.id.text); initSensor(); } private void initSensor() { SensorManager sm = (SensorManager) this.getSystemService(Context.SENSOR_SERVICE); if (sm.getDefaultSensor(Sensor.TYPE_ROTATION_VECTOR) == null) { sm.registerListener(this, sm.getDefaultSensor(Sensor.TYPE_ACCELEROMETER), SensorManager.SENSOR_DELAY_NORMAL); sm.registerListener(this, sm.getDefaultSensor(Sensor.TYPE_MAGNETIC_FIELD), SensorManager.SENSOR_DELAY_NORMAL); sm.registerListener(this, sm.getDefaultSensor(Sensor.TYPE_GYROSCOPE), SensorManager.SENSOR_DELAY_FASTEST); } else { sm.registerListener(this, sm.getDefaultSensor(Sensor.TYPE_ROTATION_VECTOR), SensorManager.SENSOR_DELAY_FASTEST); } } @Override public void onSensorChanged(SensorEvent event) { // this is never called String s = ""; for (int i = 0; i < event.values.length; i++) { s = s.concat(String.format("%.4f, ", event.values[i])); } mText.setText(s); } @Override public void onAccuracyChanged(Sensor sensor, int accuracy) { switch (accuracy) { case SensorManager.SENSOR_STATUS_ACCURACY_HIGH: Log.d("rouk1", "SENSOR_STATUS_ACCURACY_HIGH"); break; case SensorManager.SENSOR_STATUS_ACCURACY_LOW: Log.d("rouk1", "SENSOR_STATUS_ACCURACY_LOW"); break; case SensorManager.SENSOR_STATUS_ACCURACY_MEDIUM: Log.d("rouk1", "SENSOR_STATUS_ACCURACY_MEDIUM"); break; case SensorManager.SENSOR_STATUS_NO_CONTACT: Log.d("rouk1", "SENSOR_STATUS_NO_CONTACT"); break; case SensorManager.SENSOR_STATUS_UNRELIABLE: Log.d("rouk1", "SENSOR_STATUS_UNRELIABLE"); break; } } } 

One Solution collect form web for “Desde la actualización de OTA a Marshmallow mi aplicación basada en giroscopio ya no funciona”

Finalmente encontró este problema . Solución temporal es utilizar SENSOR_DELAY_GAME lugar de SENSOR_DELAY_FASTEST .

FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.