사용자가 전화를 흔들 수있게 해주는 코드 덩어리에서 작업 중이며 흔들림의 활동을 표시하거나 시작합니다. 나는 장치를 흔들면 코드가 실행되지 않는 이유를 알아 내려고하고있다. 그러나이 코드를 서비스 외부에서 실행하면 완벽하게 실행됩니다.서비스 의도가 시작되지 않음 - 오류 또는 프로그램이 중지되지 않음
참고 : 서비스가 시작되고 확인했습니다. 시작할 클래스가 내 매니페스트에 있습니다. 다시 확인했습니다. 오류가 없으며 코드가 실행될 때 코드가 중지되거나 실패하지 않습니다. 그것은 단지 내가 말한 것을하지 않습니다. 예, 모든 적절한 사용 권한이 설정됩니다.
그래서 여기에 코드입니다 : 제시 할 로그 캣이 없기 때문에
import android.app.Service;
import android.content.Context;
import android.content.Intent;
import android.hardware.Sensor;
import android.hardware.SensorEvent;
import android.hardware.SensorEventListener;
import android.hardware.SensorManager;
import android.os.Bundle;
import android.os.IBinder;
import android.widget.Toast;
public class GMeter extends Service implements SensorEventListener {
private float mLastX, mLastY, mLastZ;
private boolean mInitialized;
private SensorManager mSensorManager;
private Sensor mAccelerometer;
private final float NOISE = (float) 2.0;
/** Called when the activity is first created. */
public void onCreate(Bundle savedInstanceState) {
mInitialized = false;
mSensorManager = (SensorManager) getSystemService(Context.SENSOR_SERVICE);
mAccelerometer = mSensorManager.getDefaultSensor(Sensor.TYPE_ACCELEROMETER);
mSensorManager.registerListener(this, mAccelerometer , SensorManager.SENSOR_DELAY_NORMAL);
Toast.makeText(this, "Starting Service", Toast.LENGTH_LONG).show();
}
protected void onResume() {
mSensorManager.registerListener(this, mAccelerometer, SensorManager.SENSOR_DELAY_NORMAL);
}
protected void onPause() {
mSensorManager.unregisterListener(this);
}
@Override
public void onAccuracyChanged(Sensor sensor, int accuracy) {
// can be safely ignored for this demo
}
@Override
public void onSensorChanged(SensorEvent event) {
float x = event.values[0];
float y = event.values[1];
float z = event.values[2];
double a = Math.sqrt(Math.pow(x, 2) + Math.pow(y, 2));
double currentG = (a/ SensorManager.STANDARD_GRAVITY);
Toast.makeText(this, "Calculating G's", Toast.LENGTH_LONG).show();
if (!mInitialized && currentG > 1.0) {
mLastX = x;
mLastY = y;
mLastZ = z;
mInitialized = true;
//Start Second Activity
Intent intent = new Intent(getBaseContext(), thirdClass.class);
intent.setAction(Intent.ACTION_VIEW);
intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
intent.setFlags(Intent.FLAG_ACTIVITY_REORDER_TO_FRONT);
getApplication().startActivity(intent);
}else {
float deltaX = Math.abs(mLastX - x);
float deltaY = Math.abs(mLastY - y);
float deltaZ = Math.abs(mLastZ - z);
if (deltaX < NOISE) deltaX = (float)0.0;
if (deltaY < NOISE) deltaY = (float)0.0;
if (deltaZ < NOISE) deltaZ = (float)0.0;
mLastX = x;
mLastY = y;
mLastZ = z;
}
}
@Override
public IBinder onBind(Intent intent) {
// TODO Auto-generated method stub
return null;
}
}
이 나에게 오류를 제공하지 않습니다.
게시물을 삭제했습니다. 화면이 꺼지면 흔들려고하십니까? 기기가 잠자기 상태 일 수도 있습니다. – nandeesh
아니요, 화면이 켜져있는 동안 않습니다. – CodeMonkeyAlx
아, oncreate (번들)을 사용하고 있지만 서비스에서 onCreate()를 사용합니다. – nandeesh