首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何检测android的屏幕压力?

如何检测android的屏幕压力?
EN

Stack Overflow用户
提问于 2013-08-31 01:34:03
回答 1查看 10.5K关注 0票数 2

我想感受一下屏幕的压力。当我运行应用程序显示一条消息时,我有另一个问题,当我得到屏幕的压力时,是否可以用一些数学或物理学将重量( Unfortunately, Application has stopped. )转换为重量?下面是我的代码:

EDIT:我在平板电脑上运行这个应用程序

代码语言:javascript
复制
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;
        }

    }

错误日志:

代码语言:javascript
复制
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
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-08-31 01:54:05

压力是一个从0到1的浮点数。它的意思是硬件相关的。即使有硬件压力传感器,实际力和getPressure()返回值之间的映射仍然取决于设备。其他设备只返回一个常量值。

另外,力或重量(以牛顿为单位)与质量(以克为单位)是不同的。参见http://en.wikipedia.org/wiki/Mass_versus_weight

如果您需要有关异常的帮助,那么您应该发布抛出异常的源代码和代码行。adb log是你的朋友。

编辑:

使用未初始化的压力。它只是声明了,但没有设置任何值,所以它是null。调用它的一个方法是一个NullPointerException。只有View%s(小工具)才能接收MotionEvent%s。您需要对您的活动执行一些操作(例如,膨胀布局),然后将触摸侦听器设置为布局的视图之一:

代码语言:javascript
复制
someView.setOnTouchListener(new View.OnTouchListener() {
    @Override
    public boolean onTouch(View v, MotionEvent event) {
        float pressure = event.getPressure();
    }
});
票数 8
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/18538513

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档