-2
私は何度も試しましたが、良い結果は得られません。IntentService null値を表示
私はIntentServiceを作成しました。そこに加速度計のデータを読み込みました。 しかし、残念ながら私はnull値を得ました。
以下はマニフェストファイルです。
<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秒間他のアクティビティに保持します。
okとしばらくの間、加速度計の値を保持し、次に加速度計の登録を解除する方法です。例えば、xの値をcampareしたいという意味です。例えばxの値は2です。 x> 2の値は何かを示しています... –
最後の浮動小数点[]の値をメモリに保持することで、配列だけで、sensoreventまたは各値を分離して保持する必要はありません。サービスの登録を解除するには、sensor.unregisterService(これ)が必要です。このコードを実行する条件を記述するだけです。 – AxelH