我尝试了很多次但却无法获得任何好结果。
我创建了IntentService,其中读取了accelrometer数据。 但不幸的是我得到了空值。
以下是清单文件;
<uses-feature android:name="android.hardware.sensor.accelerometer" android:required="false"/>
<service android:name=".MyIntentSericee"
android:exported="false">
</service>
<activity android:name=".About"></activity>
这是java类;
public class MyIntentSericee extends IntentService
implements SensorEventListener {
final static String TAG = " com.example.prince.life_activity";
StringBuilder sb;
float x, y;
double z;
private Handler handler;
private SensorManager sensor;
private boolean mIsServiceStarted = false;
final int intervalTime = 10000; // 10 sec
SensorEvent event;
public MyIntentSericee() {
super("service");
}
@Override
public int onStartCommand(Intent intent, int flags, int startId) {
sensor = (SensorManager) getSystemService(SENSOR_SERVICE);
accelerometer = sensor.getDefaultSensor(Sensor.TYPE_ACCELEROMETER);
sensor.registerListener(this, accelerometer,
SensorManager.SENSOR_DELAY_NORMAL);
sb = new StringBuilder();
sb.append(x).toString();
Toast.makeText(getBaseContext(),sb,Toast.LENGTH_LONG).show();
return START_NOT_STICKY;
}
@Override
public IBinder onBind(Intent intent) {
return null;
}
@Override
protected void onHandleIntent(Intent intent) {
synchronized (this)
{
try
{
int count=0;
while(count<5) {
sb.append("" + x).toString();
Toast.makeText(getBaseContext(), sb, Toast.LENGTH_LONG).show();
wait(10000);
count++;
sensor.unregisterListener(this);
}
}
catch (Exception e)
{
//sensor.unregisterListener(this);
}
}
}
@Override
public void onCreate() {
super.onCreate();
}
@Override
public void onSensorChanged(final SensorEvent event) {
sensro();
}
@Override
public void onAccuracyChanged(Sensor sensor, int accuracy) {
}
public boolean isServiceStarted()
{
return mIsServiceStarted;
}
public void sensro()
{
if (event.sensor.getType() == Sensor.TYPE_ACCELEROMETER) {
x = event.values[0];
y = event.values[1];
z = event.values[2] - 9.8;
}
}
}
任何人都可以帮助显示加速度计值,我的意思是将加速度计值保持10秒,然后取消注册加速度计。 并传递这些存储的值,保持10秒钟到其他活动。
答案 0 :(得分:0)
onSensorChanged应该使用参数中收到的新值设置'event'变量。
您使用实例变量但从未初始化它。
我会改变sensro方法,将事件作为参数转发给远程那个实际上没有意义的实例参数。你有太多的归属......