2012-05-24 3 views
1

в моем приложении для Android он, похоже, не позволяет мне использовать акселерометр. когда я вызываю его в заявлении, приложение сбой. утверждение, что, как представляется, причина аварии является:Android Не удается получить доступ к акселерометру

SensorManager sensorManager = (SensorManager)getSystemService(Context.SENSOR_SERVICE); 

Приложения просто, как только вызывает акселерометр и работает, когда это утверждение отсутствует, выше Постулаты вызываются перед методом OnCreate и журнал кошка ниже

05-24 20:08:46.990: E/AndroidRuntime(1149): FATAL EXCEPTION: main 
05-24 20:08:46.990: E/AndroidRuntime(1149): java.lang.RuntimeException: Unable to instantiate activity ComponentInfo{com.b00348312.workout/com.b00348312.workout.WorkoutAppActivity}: java.lang.IllegalStateException: System services not available to Activities before onCreate() 
05-24 20:08:46.990: E/AndroidRuntime(1149):  at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2585) 
05-24 20:08:46.990: E/AndroidRuntime(1149):  at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2679) 
05-24 20:08:46.990: E/AndroidRuntime(1149):  at android.app.ActivityThread.access$2300(ActivityThread.java:125) 
05-24 20:08:46.990: E/AndroidRuntime(1149):  at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2033) 
05-24 20:08:46.990: E/AndroidRuntime(1149):  at android.os.Handler.dispatchMessage(Handler.java:99) 
05-24 20:08:46.990: E/AndroidRuntime(1149):  at android.os.Looper.loop(Looper.java:123) 
05-24 20:08:46.990: E/AndroidRuntime(1149):  at android.app.ActivityThread.main(ActivityThread.java:4627) 
05-24 20:08:46.990: E/AndroidRuntime(1149):  at java.lang.reflect.Method.invokeNative(Native Method) 
05-24 20:08:46.990: E/AndroidRuntime(1149):  at java.lang.reflect.Method.invoke(Method.java:521) 
05-24 20:08:46.990: E/AndroidRuntime(1149):  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:868) 
05-24 20:08:46.990: E/AndroidRuntime(1149):  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:626) 
05-24 20:08:46.990: E/AndroidRuntime(1149):  at dalvik.system.NativeStart.main(Native Method) 
05-24 20:08:46.990: E/AndroidRuntime(1149): Caused by: java.lang.IllegalStateException: System services not available to Activities before onCreate() 
05-24 20:08:46.990: E/AndroidRuntime(1149):  at android.app.Activity.getSystemService(Activity.java:3526) 
05-24 20:08:46.990: E/AndroidRuntime(1149):  at com.b00348312.workout.WorkoutAppActivity.<init>(WorkoutAppActivity.java:25) 
05-24 20:08:46.990: E/AndroidRuntime(1149):  at java.lang.Class.newInstanceImpl(Native Method) 
05-24 20:08:46.990: E/AndroidRuntime(1149):  at java.lang.Class.newInstance(Class.java:1429) 
05-24 20:08:46.990: E/AndroidRuntime(1149):  at android.app.Instrumentation.newActivity(Instrumentation.java:1021) 
05-24 20:08:46.990: E/AndroidRuntime(1149):  at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2577) 
05-24 20:08:46.990: E/AndroidRuntime(1149):  ... 11 more 

из LogCat я не могу понять причину этой проблемы, когда это утверждение работает в другой программе.

+0

полного руководства по использованию данных акселерометра в андроиде приложении http://www.quicktips.in/get-accelerometer-readings-android/ –

ответ

1

То двойное отрицание? лол Вырезать код, где Юр вызов службы системы и вставьте внутри OnCreate

public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.main); 

//PLACE YOUR ACCEL CODE IN HERE  

    } 
+0

, но у меня есть метод вне onCreate, который использует акселерометр. что я должен сделать для этого, –

+0

оставьте его там, где он есть, вам просто нужно запустить датчик в onCreate – Broak

0

Вы должны захватить SensorManager после вызова функции onCreate.

"Системные сервисы не доступны для деятельности до OnCreate()"

+0

так вызывая его до того, как onCreate в порядке, пока я использую его в oncreate? –

Смежные вопросы