传感器取值如何保持不变?

Dylumi 2016-10-31 08:44:39
package com.example.n_on;

import android.content.Context;
import android.hardware.Sensor;
import android.hardware.SensorEvent;
import android.hardware.SensorEventListener;
import android.hardware.SensorManager;
import android.media.AudioManager;
import android.media.MediaPlayer;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.widget.TextView;


public class MainActivity extends AppCompatActivity implements SensorEventListener {
private SensorManager sm_L;
private Boolean doWrite;
float lux;
static float array=9999999;
static int i = 0;
private TextView mTextView,mTextView2;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
mTextView = (TextView)findViewById(R.id.textView);
mTextView2= (TextView)findViewById(R.id.textView2);
sm_L = (SensorManager)getSystemService(Context.SENSOR_SERVICE);
}

@Override
protected void onResume() {
super.onResume();
sm_L.registerListener( this,sm_L.getDefaultSensor(Sensor.TYPE_LIGHT),SensorManager.SENSOR_DELAY_GAME);
}

public void onSensorChanged(SensorEvent event) {
lux = event.values[0];//获取当前 光感值
mTextView.setText("数值" + lux);
//-------------------------------------------------------------------
for (; i < 10; i++) {
new Thread() {
public void run() {
try {
Thread.sleep(10000);
doWrite = true;
if (doWrite) {
array = lux;//锁定当前光感值
doWrite = false;
}
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}.start();
//---------------------------------------------------------------------------------------------
}
//当光线强度大于10s前的值时 播放声音。
if (lux>array){
playMusic();
}
}
public void onAccuracyChanged(Sensor sensor, int accuracy) {

}
private void playMusic() {
// 播放音乐
MediaPlayer mPlayer = MediaPlayer.create(MainActivity.this, R.raw.alarm);
mPlayer.setAudioStreamType(AudioManager.STREAM_MUSIC);
try {
mPlayer.prepare();
} catch (Exception e) {
e.printStackTrace();
}
//理论上应该异步准备,在准备完成的回调函数中启动播放器
mPlayer.start();
}
}


如源代码,我想取 现在时刻的光感值 的值,再n秒之后再与前面取到的值比较。虚线之间的代码, 自己乱写的,不知道大神们有没有更好的方法。
还有个问题,就是音乐会重叠播放。不懂如何解决。
...全文
130 回复 打赏 收藏 转发到动态 举报
写回复
用AI写文章
回复
切换为时间正序
请发表友善的回复…
发表回复

80,490

社区成员

发帖
与我相关
我的任务
社区描述
移动平台 Android
androidandroid-studioandroidx 技术论坛(原bbs)
社区管理员
  • Android
  • yechaoa
  • 失落夏天
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧