双色球选号(三)——摇晃手机
摇晃手机: ①屏蔽不同性能手机采样的差距 高性能:30ms采样一次数据 低性能:50ms采样一次数据 如何屏蔽? 每隔100ms采样一次, 高性能手机:第四次,也就是120ms采样一次 低性能手机:第二次,采样一次 |
1、初始化SensorManager 2、在onResume()时,注册sensor 3、在onPause()时,取消注册sensor 4、采用加速度数据 5、当累加数据达到一个阈值,就认为用户在摇晃手机,那么获取一注球,然后手机震动提醒用户获取成功 6、权限 <uses-permission android:name="android.permission.VIBRATE"/> 7、全屏,防止屏幕切换 application:android:theme="@android:style/Theme.Light.NoTitleBar" activity:android:configChanges="keyboardHidden|orientation|screenLayout|smallestScreenSize" 8、选多个球时候,注数自动增加 9、排列数和组合数 |
核心代码: private SensorManager sensorManager;
private ShakeListener mySensorEventListener;
/**
* 初始化Sensor相关操作
*/
public void initSensor(){
//List<Sensor> sensorList = sensorManager.getSensorList(Sensor.TYPE_ACCELEROMETER);
sensorManager = (SensorManager) context.getSystemService(Context.SENSOR_SERVICE);
mySensorEventListener = new ShakeListener(context) {
@Override
public void createLottery() {
// 机选红球
randomSelectRedBall();
// 机选蓝球
randomSelectBlueBall();
}
};
}
/**
* 注册Sensor
*/
public void registerSensor(){
if (sensorManager != null) {
Sensor sensor = sensorManager.getDefaultSensor( Sensor.TYPE_ACCELEROMETER);
sensorManager.registerListener(mySensorEventListener,sensor, SensorManager.SENSOR_DELAY_FASTEST);
}
}
/**
* 取消注册Sensor
*/
public void unRegisterSensor(){
if (sensorManager!=null) {
Sensor sensor = sensorManager.getDefaultSensor( Sensor.TYPE_ACCELEROMETER);
sensorManager.unregisterListener(mySensorEventListener,sensor);
}
}
|
摇晃手机,加速度获取
|
问题1:不停的在获取球,不停的震动 解决:在获取一注完毕后,要记得清零 |
问题2:返回键,还在获取数据,不停的震动 在onPause()方法中,取消注册 |
|