I upgraded Nexus 5 to Marshmallow using OTA. Since updating a simple sensor-based action no longer works. The following code does what it should do on other devices (Galaxy S4 Lolipop, AVD, ...)
Does anyone have an experiment? Did I miss something?
Here is the code:
build.gradle
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) {
rouk1 source share