2012-05-02 11 views
0

私は加速度計を使いたいアンドロイドアプリケーションを開発しています。 しかし、私がメソッドを呼び出すときはいつも:SensorManagerでアプリケーションがクラッシュする

SensorManager sm = (SensorManager)context.getSystemService(Context.SEARCH_SERVICE); 

私のアプリケーションはクラッシュします。

私のコードは次のとおりです。

public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.main); 
    context = getApplicationContext(); 
    SensorManager sm = (SensorManager)context.getSystemService(Context.SEARCH_SERVICE); 
    if(sm.getSensorList(Sensor.TYPE_ACCELEROMETER).size()!=0) 
    { 

     Sensor s = sm.getSensorList(Sensor.TYPE_ACCELEROMETER).get(0); 
     sm.registerListener(this, s, SensorManager.SENSOR_DELAY_NORMAL); 
    } 

    x = y = sensorX = sensorY = 0; 

} 

私はウェブ上で検索を行わなく、任意の解決策を見つけることができません。エミュレータではなく電話でアプリケーションをデバッグしています。こんにちは、なぜそれがクラッシュし、私はそれを修正することができますこの点で私を助けてください。 5月2日06:40:04.299:/ dalvikvm(9525)W:以下

ログ猫エラーです= 1スレッドID:スレッドが捕捉されない例外(グループ= 0x40018578)

05-02 06:40:04.309: E/AndroidRuntime(9525): FATAL EXCEPTION: main 
    05-02 06:40:04.309: E/AndroidRuntime(9525): java.lang.RuntimeException: Unable to  start activity ComponentInfo{com.accelerometer/com.accelerometer.AccelerometerActivity}: java.lang.ClassCastException: android.app.SearchManager 

    05-02 06:40:04.309: E/AndroidRuntime(9525): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1651) 

    05-02 06:40:04.309: E/AndroidRuntime(9525): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:1667) 

    05-02 06:40:04.309: E/AndroidRuntime(9525): at android.app.ActivityThread.access$1500(ActivityThread.java:117) 

    05-02 06:40:04.309: E/AndroidRuntime(9525): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:935) 

    05-02 06:40:04.309: E/AndroidRuntime(9525): at android.os.Handler.dispatchMessage(Handler.java:99) 

    05-02 06:40:04.309: E/AndroidRuntime(9525): at android.os.Looper.loop(Looper.java:123) 

    05-02 06:40:04.309: E/AndroidRuntime(9525): at android.app.ActivityThread.main(ActivityThread.java:3687) 

05-02 06:40:04.309: E/AndroidRuntime(9525): at java.lang.reflect.Method.invokeNative(Native Method) 

05-02 06:40:04.309: E/AndroidRuntime(9525): at java.lang.reflect.Method.invoke(Method.java:507) 

05-02 06:40:04.309: E/AndroidRuntime(9525): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:867) 

05-02 06:40:04.309: E/AndroidRuntime(9525): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:625) 

05-02 06:40:04.309: E/AndroidRuntime(9525): at dalvik.system.NativeStart.main(Native Method) 

05-02 06:40:04.309: E/AndroidRuntime(9525): Caused by: java.lang.ClassCastException: android.app.SearchManager 

05-02 06:40:04.309: E/AndroidRuntime(9525): at com.accelerometer.AccelerometerActivity.onCreate(AccelerometerActivity.java:24) 

05-02 06:40:04.309: E/AndroidRuntime(9525):  at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1047) 

05-02 06:40:04.309: E/AndroidRuntime(9525):  at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1615) 

と出るおかげ。

+0

ログキャストエラーを投稿してください。 – Sam

+0

私は投稿を編集し、私のlogcatエラーを掲載しました。 –

答えて

0
SensorManager sm = (SensorManager)context.getSystemService(Context.SEARCH_SERVICE); 

これはgetSystemService()からSearchManagerを返し、あなたがSensorManager、近くにSearchManagerを変換ではなく、まったく同じことができない...

取得するにはSensorManagerはこの試してみてください。(Dev Guideからの引用)

public SensorActivity() { 
    mSensorManager = (SensorManager)getSystemService(SENSOR_SERVICE); 
    mAccelerometer = mSensorManager.getDefaultSensor(Sensor.TYPE_ACCELEROMETER); 
} 
+0

ありがとうございました。私はあなたの助言によってそれを解決しました。ありがとうございました。 –

+0

彼の答えを受け入れる –

+0

@YusufX彼は答えを受け入れた... – Sam

関連する問題