2013-08-30 6 views
1

화면의 압력을 받고 싶습니다. 응용 프로그램을 실행하면 나에게 메시지가 표시됩니다. Unfortunately, Application has stopped. 화면의 압력을 받아 들일 때 어떤 수학이나 물리학으로 무게가 (그램) 변환 될 때 다른 질문이 생깁니 까? 여기에 코드를 내가 가지고있다 :안드로이드 화면 압력을 감지하는 방법?

편집 : 태블릿에

package com.realscale.stefanrafa; 

    import android.app.Activity; 
    import android.os.Bundle; 
    import android.view.Menu; 
    import android.view.MotionEvent; 
    import android.widget.TextView; 

    public class MainActivity extends Activity { 

     TextView textinfo; 
     MotionEvent pressure; 
     @Override 
     protected void onCreate(Bundle savedInstanceState) { 
      super.onCreate(savedInstanceState); 
      setContentView(R.layout.activity_main); 
      textinfo = (TextView) findViewById(R.id.Information); 

      float press = pressure.getPressure(); 
      textinfo.setText("Scale: " + (int) press); 
     } 

     @Override 
     public boolean onCreateOptionsMenu(Menu menu) { 
      // Inflate the menu; this adds items to the action bar if it is present. 
      getMenuInflater().inflate(R.menu.main, menu); 
      return true; 
     } 

    } 

오류 로그이 응용 프로그램을 실행 해요 : 0에서 1로

08-30 19:53:40.620: W/ActivityThread(29458): Application com.realscale.stefanrafa can be debugged on port 8100... 08-30 19:53:40.710: D/AndroidRuntime(29458): Shutting down VM 08-30 19:53:40.710: W/dalvikvm(29458): threadid=1: thread exiting with uncaught exception (group=0x41a0c2a0) 
08-30 19:53:40.715: E/AndroidRuntime(29458): FATAL EXCEPTION: main 08-30 19:53:40.715: E/AndroidRuntime(29458): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.realscale.stefanrafa/com.realscale.stefanrafa.MainActivity}: java.lang.NullPointerException 

08-30 19:53:40.715: E/AndroidRuntime(29458): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2110)   
08-30 19:53:40.715: E/AndroidRuntime(29458): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2135) 

08-30 19:53:40.715: E/AndroidRuntime(29458): at android.app.ActivityThread.access$700(ActivityThread.java:140) 

08-30 19:53:40.715: E/AndroidRuntime(29458): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1237) 

08-30 19:53:40.715: E/AndroidRuntime(29458): at android.os.Handler.dispatchMessage(Handler.java:99) 

08-30 19:53:40.715: E/AndroidRuntime(29458): at android.os.Looper.loop(Looper.java:137) 

08-30 19:53:40.715: E/AndroidRuntime(29458): at android.app.ActivityThread.main(ActivityThread.java:4921) 

08-30 19:53:40.715: E/AndroidRuntime(29458): at java.lang.reflect.Method.invokeNative(Native Method) 

08-30 19:53:40.715: E/AndroidRuntime(29458): at java.lang.reflect.Method.invoke(Method.java:511) 

08-30 19:53:40.715: E/AndroidRuntime(29458): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1038) 08-30 19:53:40.715: E/AndroidRuntime(29458): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:805) 

08-30 19:53:40.715: E/AndroidRuntime(29458): at dalvik.system.NativeStart.main(Native Method) 

08-30 19:53:40.715: E/AndroidRuntime(29458): Caused by: java.lang.NullPointerException 

08-30 19:53:40.715: E/AndroidRuntime(29458): at com.realscale.stefanrafa.MainActivity.onCreate(MainActivity.java:19) 

08-30 19:53:40.715: E/AndroidRuntime(29458): at android.app.Activity.performCreate(Activity.java:5188) 

08-30 19:53:40.715: E/AndroidRuntime(29458): at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1094) 

08-30 19:53:40.715: E/AndroidRuntime(29458): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2074) 

08-30 19:53:40.715: E/AndroidRuntime(29458): ... 11 more 
+0

확인 질문이 무엇인지, 당신은 물리학이나 도움을 요청하는 것은 아닙니다 앱이 예외를 던지고 있습니까? – Kerry

+0

예, 내 응용 프로그램이 예외를 던지고있다, 나는 그 코드 때문에 생각하고 또한 그램으로 변환하는 화면의 압력을 받고 나서 물어보고 싶다 – Stefan

+0

당신은 예외가 어디 있는지'logcat '의 출력을 게시해야합니다 예외가 발생한 모든 코드가 throw됩니다. – Kerry

답변

6

압력이 부동이다 무엇 이는 하드웨어에 종속됨을 의미합니다. 하드웨어 압력 센서가 있더라도 실제 힘과 반환 값 getPressure() 사이의 맵은 여전히 ​​장치에 따라 다릅니다. 또한 하드웨어 압력 센서가없는 일부 장치는 접촉 지점의 크기에 따른 압력을 시뮬레이션합니다. 즉, 압력이 높을수록 손가락이 평평해진다는 것을 전제로합니다. 다른 장치는 단지 상수 값을 반환합니다.

또한 힘 (뉴턴으로 측정)과 질량 (그램으로 측정)이 같지 않습니다. http://en.wikipedia.org/wiki/Mass_versus_weight을 참조하십시오.

예외에 대한 도움이 필요하면 소스와 던져진 행을 게시해야합니다. adb log 님은 친구입니다.

편집 :

압력을 초기화하지 않았습니다. 그냥 선언했지만 아무것도 설정할 수 없으므로 null입니다. 메서드 중 하나를 호출하면 NullPointerException이 발생합니다. View (위젯) 만 MotionEvent을받을 수 있습니다. 당신은 (예를 들어, 레이아웃을 부풀려) 활동으로 뭔가를 할 필요가 다음 레이아웃의보기 중 하나를 터치 리스너를 설정합니다

someView.setOnTouchListener(new View.OnTouchListener() { 
    @Override 
    public boolean onTouch(View v, MotionEvent event) { 
     float pressure = event.getPressure(); 
    } 
}); 
+0

QUESTION UPDATED – Stefan

+0

사실 그것은 모든 코드입니다. – Stefan

+0

이 코드는 실제로 작동하지만 그냥 손가락으로 누를 때 모든 개체의 압력을 받으면 가능하지 않도록하고 싶습니다. BTW 나는 그것을 알고 있기를 원하는 터치 때문에 그게 알아? – Stefan

관련 문제