Loading core/java/android/hardware/SystemSensorManager.java +16 −10 Original line number Diff line number Diff line Loading @@ -27,7 +27,6 @@ import android.content.Context; import android.content.Intent; import android.content.IntentFilter; import android.content.pm.ApplicationInfo; import android.content.pm.PackageManager; import android.os.Build; import android.os.Handler; import android.os.Looper; Loading @@ -49,6 +48,7 @@ import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; import java.util.Optional; /** * Sensor manager implementation that communicates with the built-in Loading Loading @@ -119,10 +119,11 @@ public class SystemSensorManager extends SensorManager { private final Looper mMainLooper; private final int mTargetSdkLevel; private final boolean mIsPackageDebuggable; private final boolean mHasHighSamplingRateSensorsPermission; private final Context mContext; private final long mNativeInstance; private Optional<Boolean> mHasHighSamplingRateSensorsPermission = Optional.empty(); /** {@hide} */ public SystemSensorManager(Context context, Looper mainLooper) { synchronized (sLock) { Loading @@ -138,11 +139,6 @@ public class SystemSensorManager extends SensorManager { mContext = context; mNativeInstance = nativeCreate(context.getOpPackageName()); mIsPackageDebuggable = (0 != (appInfo.flags & ApplicationInfo.FLAG_DEBUGGABLE)); PackageManager packageManager = context.getPackageManager(); mHasHighSamplingRateSensorsPermission = (PERMISSION_GRANTED == packageManager.checkPermission( HIGH_SAMPLING_RATE_SENSORS_PERMISSION, appInfo.packageName)); // initialize the sensor list for (int index = 0;; ++index) { Loading @@ -153,7 +149,6 @@ public class SystemSensorManager extends SensorManager { } } /** @hide */ @Override protected List<Sensor> getFullSensorList() { Loading Loading @@ -575,7 +570,7 @@ public class SystemSensorManager extends SensorManager { && isSensorInCappedSet(sensor.getType()) && rate > CAPPED_SAMPLING_RATE_LEVEL && mIsPackageDebuggable && !mHasHighSamplingRateSensorsPermission && !hasHighSamplingRateSensorsPermission() && Compatibility.isChangeEnabled(CHANGE_ID_SAMPLING_RATE_SENSORS_PERMISSION)) { throw new SecurityException("To use the sampling rate level " + rate + ", app needs to declare the normal permission" Loading Loading @@ -787,7 +782,7 @@ public class SystemSensorManager extends SensorManager { if (mManager.isSensorInCappedSet(sensor.getType()) && rateUs < CAPPED_SAMPLING_PERIOD_US && mManager.mIsPackageDebuggable && !mManager.mHasHighSamplingRateSensorsPermission && !mManager.hasHighSamplingRateSensorsPermission() && Compatibility.isChangeEnabled(CHANGE_ID_SAMPLING_RATE_SENSORS_PERMISSION)) { throw new SecurityException("To use the sampling rate of " + rateUs + " microseconds, app needs to declare the normal permission" Loading Loading @@ -1034,4 +1029,15 @@ public class SystemSensorManager extends SensorManager { || sensorType == Sensor.TYPE_MAGNETIC_FIELD || sensorType == Sensor.TYPE_MAGNETIC_FIELD_UNCALIBRATED); } private boolean hasHighSamplingRateSensorsPermission() { if (!mHasHighSamplingRateSensorsPermission.isPresent()) { boolean granted = mContext.getPackageManager().checkPermission( HIGH_SAMPLING_RATE_SENSORS_PERMISSION, mContext.getApplicationInfo().packageName) == PERMISSION_GRANTED; mHasHighSamplingRateSensorsPermission = Optional.of(granted); } return mHasHighSamplingRateSensorsPermission.get(); } } Loading
core/java/android/hardware/SystemSensorManager.java +16 −10 Original line number Diff line number Diff line Loading @@ -27,7 +27,6 @@ import android.content.Context; import android.content.Intent; import android.content.IntentFilter; import android.content.pm.ApplicationInfo; import android.content.pm.PackageManager; import android.os.Build; import android.os.Handler; import android.os.Looper; Loading @@ -49,6 +48,7 @@ import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; import java.util.Optional; /** * Sensor manager implementation that communicates with the built-in Loading Loading @@ -119,10 +119,11 @@ public class SystemSensorManager extends SensorManager { private final Looper mMainLooper; private final int mTargetSdkLevel; private final boolean mIsPackageDebuggable; private final boolean mHasHighSamplingRateSensorsPermission; private final Context mContext; private final long mNativeInstance; private Optional<Boolean> mHasHighSamplingRateSensorsPermission = Optional.empty(); /** {@hide} */ public SystemSensorManager(Context context, Looper mainLooper) { synchronized (sLock) { Loading @@ -138,11 +139,6 @@ public class SystemSensorManager extends SensorManager { mContext = context; mNativeInstance = nativeCreate(context.getOpPackageName()); mIsPackageDebuggable = (0 != (appInfo.flags & ApplicationInfo.FLAG_DEBUGGABLE)); PackageManager packageManager = context.getPackageManager(); mHasHighSamplingRateSensorsPermission = (PERMISSION_GRANTED == packageManager.checkPermission( HIGH_SAMPLING_RATE_SENSORS_PERMISSION, appInfo.packageName)); // initialize the sensor list for (int index = 0;; ++index) { Loading @@ -153,7 +149,6 @@ public class SystemSensorManager extends SensorManager { } } /** @hide */ @Override protected List<Sensor> getFullSensorList() { Loading Loading @@ -575,7 +570,7 @@ public class SystemSensorManager extends SensorManager { && isSensorInCappedSet(sensor.getType()) && rate > CAPPED_SAMPLING_RATE_LEVEL && mIsPackageDebuggable && !mHasHighSamplingRateSensorsPermission && !hasHighSamplingRateSensorsPermission() && Compatibility.isChangeEnabled(CHANGE_ID_SAMPLING_RATE_SENSORS_PERMISSION)) { throw new SecurityException("To use the sampling rate level " + rate + ", app needs to declare the normal permission" Loading Loading @@ -787,7 +782,7 @@ public class SystemSensorManager extends SensorManager { if (mManager.isSensorInCappedSet(sensor.getType()) && rateUs < CAPPED_SAMPLING_PERIOD_US && mManager.mIsPackageDebuggable && !mManager.mHasHighSamplingRateSensorsPermission && !mManager.hasHighSamplingRateSensorsPermission() && Compatibility.isChangeEnabled(CHANGE_ID_SAMPLING_RATE_SENSORS_PERMISSION)) { throw new SecurityException("To use the sampling rate of " + rateUs + " microseconds, app needs to declare the normal permission" Loading Loading @@ -1034,4 +1029,15 @@ public class SystemSensorManager extends SensorManager { || sensorType == Sensor.TYPE_MAGNETIC_FIELD || sensorType == Sensor.TYPE_MAGNETIC_FIELD_UNCALIBRATED); } private boolean hasHighSamplingRateSensorsPermission() { if (!mHasHighSamplingRateSensorsPermission.isPresent()) { boolean granted = mContext.getPackageManager().checkPermission( HIGH_SAMPLING_RATE_SENSORS_PERMISSION, mContext.getApplicationInfo().packageName) == PERMISSION_GRANTED; mHasHighSamplingRateSensorsPermission = Optional.of(granted); } return mHasHighSamplingRateSensorsPermission.get(); } }