精华内容
下载资源
问答
  • android触摸屏测试程序demo

    热门讨论 2012-02-03 17:18:53
    android触摸屏测试程序demo
  • 测试五点触控并实时屏幕上显示五个点的xy坐标 源码非常简单,使用了 Canvas.drawCircle 和 drawText, 有需要可以索取。
  • android触摸屏测试程序

    热门讨论 2011-03-28 01:11:34
    android触摸屏测试程序,android市场上都有下的
  • ANDROID触屏测试源码

    2012-07-27 09:38:20
    android下的触屏测试源码,支持10点触摸
  • android触摸测试,支持多指同时划动,主要用于安卓系统下对触摸驱动的测试,代码中也加了多指坐标点的打印,可以帮助排查触摸问题。当然安卓的开发者选项中也有指针的显示界面,但自己写的代码可以灵活增加一些日志...
  • android 屏幕测试源码

    热门讨论 2012-08-08 07:25:34
    自己写的 android 屏幕测试 显示在全屏状态下,测试 R G B三色 和 全黑,全白几种状态
  • 本文实例详细描述了Android触屏测试代码,可实现对触屏的点击、移动、离开等事件的处理,对于Android初学者有很好的借鉴价值。具体功能代码如下:package com.test;import android.app.Activity;import android.os....

    本文实例详细描述了Android触屏测试代码,可实现对触屏的点击、移动、离开等事件的处理,对于Android初学者有很好的借鉴价值。

    具体功能代码如下:

    package com.test;

    import android.app.Activity;

    import android.os.Bundle;

    import android.util.DisplayMetrics;

    import android.util.Log;

    import android.view.MotionEvent;

    import android.view.View;

    import android.widget.AbsoluteLayout;

    import android.widget.Button;

    import android.widget.ImageView;

    import android.widget.Toast;

    public class TouchActivity extends Activity {

    /*声明ImageView变量*/

    private ImageView mImageView01;

    /*声明相关变量作为存储图片宽高,位置使用*/

    private int intWidth, intHeight, intDefaultX, intDefaultY;

    private float mX, mY;

    /*声明存储屏幕的分辨率变量 */

    private int intScreenX, intScreenY;

    public void onCreate(Bundle savedInstanceState)

    {

    super.onCreate(savedInstanceState);

    setContentView(R.layout.main);

    /* 取得屏幕对象 */

    DisplayMetrics dm = new DisplayMetrics();

    getWindowManager().getDefaultDisplay().getMetrics(dm);

    /* 取得屏幕解析像素 */

    intScreenX = dm.widthPixels;

    intScreenY = dm.heightPixels;

    /* 设置图片的宽高 */

    intWidth = 100;

    intHeight = 100;

    /*通过findViewById构造器创建ImageView对象*/

    mImageView01 =(ImageView) findViewById(R.id.myImageView1);

    /*将图片从Drawable赋值给ImageView来呈现*/

    mImageView01.setImageResource(R.drawable.baby);

    /* 初始化按钮位置居中 */

    RestoreButton();

    /* 当点击ImageView,还原初始位置 */

    mImageView01.setOnClickListener(new Button.OnClickListener()

    {

    @Override

    public void onClick(View v)

    {

    RestoreButton();

    }

    });

    }

    /*覆盖触控事件*/

    public boolean onTouchEvent(MotionEvent event)

    {

    /*取得手指触控屏幕的位置*/

    float x = event.getX();

    float y = event.getY();

    try

    {

    /*触控事件的处理*/

    switch (event.getAction())

    {

    /*点击屏幕*/

    case MotionEvent.ACTION_DOWN:

    picMove(x, y);

    break;

    /*移动位置*/

    case MotionEvent.ACTION_MOVE:

    picMove(x, y);

    break;

    /*离开屏幕*/

    case MotionEvent.ACTION_UP:

    picMove(x, y);

    break;

    }

    }catch(Exception e)

    {

    e.printStackTrace();

    }

    return true;

    }

    /*移动图片的方法*/

    private void picMove(float x, float y)

    {

    /*默认微调图片与指针的相对位置*/

    mX=x-(intWidth/2);

    mY=y-(intHeight/2);

    /*防图片超过屏幕的相关处理*/

    /*防止屏幕向右超过屏幕*/

    if((mX+intWidth)>intScreenX)

    {

    mX = intScreenX-intWidth;

    }

    /*防止屏幕向左超过屏幕*/

    else if(mX<0)

    {

    mX = 0;

    }

    /*防止屏幕向下超过屏幕*/

    else if ((mY+intHeight)>intScreenY)

    {

    mY=intScreenY-intHeight;

    }

    /*防止屏幕向上超过屏幕*/

    else if (mY<0)

    {

    mY = 0;

    }

    /*通过log 来查看图片位置*/

    Log.i("jay", Float.toString(mX)+","+Float.toString(mY));

    /* 以setLayoutParams方法,重新安排Layout上的位置 */

    mImageView01.setLayoutParams

    (

    new AbsoluteLayout.LayoutParams

    (intWidth,intHeight,(int) mX,(int)mY)

    );

    }

    /* 还原ImageView位置的事件处理 */

    public void RestoreButton()

    {

    intDefaultX = ((intScreenX-intWidth)/2);

    intDefaultY = ((intScreenY-intHeight)/2);

    /*Toast还原位置坐标*/

    mMakeTextToast

    (

    "("+

    Integer.toString(intDefaultX)+

    ","+

    Integer.toString(intDefaultY)+")",true

    );

    /* 以setLayoutParams方法,重新安排Layout上的位置 */

    mImageView01.setLayoutParams

    (

    new AbsoluteLayout.LayoutParams

    (intWidth,intHeight,intDefaultX,intDefaultY)

    );

    }

    /*自定义一发出信息的方法*/

    public void mMakeTextToast(String str, boolean isLong)

    {

    if(isLong==true)

    {

    Toast.makeText(TouchActivity.this, str, Toast.LENGTH_LONG).show();

    }

    else

    {

    Toast.makeText(TouchActivity.this, str, Toast.LENGTH_SHORT).show();

    }

    }

    }

    读者还可以在该实例的基础上完善各种事件的响应处理函数,使其功能更加丰富。

    展开全文
  • 安卓触摸性能及显示性能测试程序,可用于测试安卓系统的触摸性能及显示性能,支持安卓4.4及以上所有安卓系统。
  • 安卓端的屏幕测试工具,支持纯色、色阶等测试,支持Android 4.4系统,支持1024*600的分辨率。
  • 看看是否有任何错误: input tap [x] [y] Android comes with an input command-line tool that can simulate miscellaneous input events. input → The command line tool to send events tap → the action [x] ...

    您可以将/ proc / bus / input / devices读取到

    get details of your existing input devices。

    根据您的硬件名称,您可以执行类似操作,并检查是否有任何输出:

    cat /proc/bus/input/devices | grep "Name=" | grep "Touch"

    这是/ proc / bus / input / devices的完整输出:

    I: Bus=0011 Vendor=0002 Product=0008 Version=2222

    N: Name="AlpsPS/2 ALPS DualPoint TouchPad"

    P: Phys=isa0060/serio1/input0

    S: Sysfs=/class/input/input2

    H: Handlers=mouse1 event2 ts1

    B: EV=f

    B: KEY=420 0 70000 0 0 0 0 0 0 0 0

    B: REL=3

    B: ABS=1000003

    [...] (blank line, next device)

    The B in front stands for bitmap, N, P, S, U, H are simply first

    letter in corresponding name value and I is for ID. In ordered

    fashion:

    I → @id: id of the device (struct input_id)

    Bus → id.bustype

    Vendor → id.vendor

    Product → id.product

    Version → id.version

    N → name of the device

    P → physical path to the device in the system hierarchy

    S → sysfs path

    U → unique identification code for the device (if device has it)

    H → list of input handles associated with the device

    B → bitmaps

    PROP → device properties and quirks

    EV → types of events supported by the device

    KEY → keys/buttons this device has

    MSC → miscellaneous events supported by the device

    LED → leds present on the device

    REL → relative address

    ABS → absolute address

    要测试设备是否实际连接,您可以尝试模拟事件,看看是否有任何错误:

    input tap [x] [y]

    Android comes with an input command-line tool that can simulate miscellaneous input events.

    input → The command line tool to send events

    tap → the action

    [x] → X coordinate on the screen

    [y] → Y coordinate on the screen

    展开全文
  • 摘要:Java源码,Android,触摸屏 Android触摸点TouchCircle测试代码,部分代码:  setContentView(R.layout.main);  //得到线性布局的容器  LinearLayout layout =(LinearLayout)findViewById(R.id.root);  //创建...
  • android触摸屏幕测试CIT程序 测试工具
  • android触摸屏测试程序 未完成版
  • Android触摸屏配置调试

    千次阅读 2017-09-14 16:24:19
    首先输入Command查看你的input配置~...提示下,如果配置文件那显示为空的话,你就直接用你触摸屏的名字就行了,比如我的就是这样!!! 然后我们把官方包里面的/system/usr/idc/Fts-touchscreen.idc给替换过去就搞定了

    首先输入Command查看你的input配置~

    adb shell dumpsys input
    

    下面给出我设备输出的一部分!!

    INPUT MANAGER (dumpsys input)
    
    Event Hub State:
      BuiltInKeyboardId: -2 Devices:
        -1: Virtual
          Classes: 0x40000023 Path: <virtual>
          Descriptor: a718a782d34bc767f4689c232d64d527998ea7fd
          Location: 
          UniqueId: <virtual>
          Identifier: bus=0x0000, vendor=0x0000, product=0x0000, version=0x0000 KeyLayoutFile: /system/usr/keylayout/Generic.kl
          KeyCharacterMapFile: /system/usr/keychars/Virtual.kcm
          ConfigurationFile: 
          HaveKeyboardLayoutOverlay: false 2: 7k_handset
          Classes: 0x00000081 Path: /dev/input/event3
          Descriptor: 485d69228e24f5e46da1598745890b214130dbc4
          Location: 
          UniqueId: 
          Identifier: bus=0x0000, vendor=0x0001, product=0x0001, version=0x0001 KeyLayoutFile: /system/usr/keylayout/7k_handset.kl
          KeyCharacterMapFile: /system/usr/keychars/Generic.kcm
          ConfigurationFile: 
          HaveKeyboardLayoutOverlay: false 3: 7x27a_kp
          Classes: 0x00000001 Path: /dev/input/event2
          Descriptor: 69d9f17876369ab4fac2735426d3bc23660247c4
          Location: 
          UniqueId: 
          Identifier: bus=0x0000, vendor=0x0000, product=0x0000, version=0x0000 KeyLayoutFile: /system/usr/keylayout/7x27a_kp.kl
          KeyCharacterMapFile: /system/usr/keychars/7x27a_kp.kcm
          ConfigurationFile: 
          HaveKeyboardLayoutOverlay: false 4: Fts-touchscreen
          Classes: 0x00000015 Path: /dev/input/event1
          Descriptor: af69cada3c01369f38b564c8bd34be115723d040
          Location: 
          UniqueId: 
          Identifier: bus=0x0000, vendor=0x0000, product=0x0000, version=0x0000 KeyLayoutFile: /system/usr/keylayout/Generic.kl
          KeyCharacterMapFile: /system/usr/keychars/Generic.kcm
          ConfigurationFile: /system/usr/idc/Fts-touchscreen.idc
          HaveKeyboardLayoutOverlay: false 

    从上面可以看到"4: Fts-touchscreen",这货就是我的触摸屏啦(??? )
    我们看下他的配置文件,就是这货"ConfigurationFile: /system/usr/idc/Fts-touchscreen.idc"
    提示下,如果配置文件那显示为空的话,你就直接用你触摸屏的名字就行了,比如我的就是这样!!!
    然后我们把官方包里面的/system/usr/idc/Fts-touchscreen.idc给替换过去就搞定了

    展开全文
  • 前言几个月以前升级了android4.0,在触摸屏这块一直有个令人头疼的问题,通常触摸屏的分辨率应该是根据当前屏幕分辨率而定。但android4.0上就有点奇怪,不管怎么换屏幕的分辨率,触摸屏始终有不准的情况。最近着手...

    前言

    几个月以前升级了android4.0,在触摸屏这块一直有个令人头疼的问题,通常触摸屏的分辨率应该是根据当前屏幕分辨率而定。

    但android4.0上就有点奇怪,不管怎么换屏幕的分辨率,触摸屏始终有不准的情况。最近着手研究了这块,通过修改inputreader.cpp

    及 com_android_server_InputManager.cpp终于解决的触摸屏不准的问题。

    正文

    由于驱动是直接从android2.3的linux内核中移植过来,而android2.3上又可以正常使用且没有任何区域触摸无反应的情况,因此可以

    排除linux-->android层之间的接口问题。

    分析

    触摸屏属于输入设备,而且在整个输入过程中肯定是有坐标转换的,否则系统是无法获取触摸屏的准确点击位置。而在android中输入

    事件可以到input相关代码中查找。

    源码追踪

    仔细分析了下framework代码,可以发现framework//base/services/input/InputReader.cpp 中对触摸事件设置了一个分辨率映射值:

    void InputReaderConfiguration::setDisplayInfo(int32_t displayId, bool external,

    int32_t width, int32_t height, int32_t orientation) {

    if (displayId == 0) {

    DisplayInfo& info = external ? mExternalDisplay : mInternalDisplay;

    info.width = width;

    info.height = height;

    info.orientation = orientation;

    }

    }

    此处DisplayInfo& info = external ? mExternalDisplay : mInternalDisplay;说明该函数可能有两次调用,用于设置两种情况的输入设备。

    而附近又对应了获取显示器信息函数

    bool InputReaderConfiguration::getDisplayInfo(int32_t displayId, bool external,

    int32_t* width, int32_t* height, int32_t* orientation) const {

    }

    并且在该文件中有多处调用了该函数,其中以下位置比较可疑

    void TouchInputMapper::configureSurface(nsecs_t when, bool* outResetNeeded) {

    int32_t oldDeviceMode = mDeviceMode;

    ......

    // Get associated display dimensions.

    if (mParameters.associatedDisplayId >= 0) {

    if (!mConfig.getDisplayInfo(mParameters.associatedDisplayId,

    mParameters.associatedDisplayIsExternal,

    &mAssociatedDisplayWidth, &mAssociatedDisplayHeight,

    &mAssociatedDisplayOrientation)) {

    LOGI(INDENT "Touch device '%s' could not query the properties of its associated "

    "display %d. The device will be inoperable until the display size "

    "becomes available.",

    getDeviceName().string(), mParameters.associatedDisplayId);

    //这块打印消息直接暴露了 触摸屏设备获取屏幕分辨率的踪迹,看来触摸屏确实是通过获取

    //当前屏幕分辨率来映射坐标值的

    mDeviceMode = DEVICE_MODE_DISABLED;

    return;

    }

    }

    // Configure dimensions.

    int32_t width, height, orientation;

    if (mDeviceMode == DEVICE_MODE_DIRECT || mDeviceMode == DEVICE_MODE_POINTER) {

    width = mAssociatedDisplayWidth; //此处保留了之前获取的宽度

    height = mAssociatedDisplayHeight;//此处保留了之前获取的高度

    orientation = mParameters.orientationAware ? //此处保留了屏幕的方向

    mAssociatedDisplayOrientation : DISPLAY_ORIENTATION_0;

    } else {

    width = mRawPointerAxes.x.maxValue - mRawPointerAxes.x.minValue + 1;

    height = mRawPointerAxes.y.maxValue - mRawPointerAxes.y.minValue + 1;

    orientation = DISPLAY_ORIENTATION_0;

    }看来是有必要追踪是谁调用了

    setDisplayInfo

    通过source insight搜索发现

    com_android_server_InputManager.cpp中对InputReaderConfiguration::setDisplayInfo调用了两次,代码如下:

    void NativeInputManager::getReaderConfiguration(InputReaderConfiguration* outConfig) {

    JNIEnv* env = jniEnv();

    ......

    { // acquire lock

    AutoMutex _l(mLock);

    outConfig->pointerVelocityControlParameters.scale = exp2f(mLocked.pointerSpeed

    * POINTER_SPEED_EXPONENT);

    outConfig->pointerGesturesEnabled = mLocked.pointerGesturesEnabled;

    outConfig->showTouches = mLocked.showTouches;

    outConfig->setDisplayInfo(0, false /*external*/,

    mLocked.displayWidth, mLocked.displayHeight, mLocked.displayOrientation);

    outConfig->setDisplayInfo(0, true /*external*/,

    mLocked.displayExternalWidth, mLocked.displayExternalHeight,

    mLocked.displayOrientation);

    }

    }

    立刻在setDisplayInfo函数中增加打印消息

    void InputReaderConfiguration::setDisplayInfo(int32_t displayId, bool external,

    int32_t width, int32_t height, int32_t orientation) {

    LOGI("[inputreader] [setDisplayInfo] : width=%d height=%d orientation=%d",

    width, height, orientation);

    if (displayId == 0) {

    DisplayInfo& info = external ? mExternalDisplay : mInternalDisplay;

    info.width = width;

    info.height = height;

    info.orientation = orientation;

    }

    } 重新制作固件烧录后重启发现:

    两次setDisplayInfo分别设置了连个不同分辨率的值下来

    笔者用的是lvds输出,分辨率设置为1920*1080

    第一次:

    [inputreader] [setDisplayInfo] : width=1920 height=1080 orientation=0第二次

    [inputreader] [setDisplayInfo] : width=1280 height=800 orientation=0这一结果也解释了触摸屏不准的情况,原来是将1280*800的分辨率映射到1920*1080的显示屏上。

    解决方法

    通过测试结果可以发现第一次获取的屏幕分辨率是准确的,因此于是通过以下方式修改,解决了触摸不准的情况

    1.注释getReaderConfiguration中第二次调用setDisplayInfo

    void NativeInputManager::getReaderConfiguration(InputReaderConfiguration* outConfig) {

    JNIEnv* env = jniEnv();

    ......

    outConfig->setDisplayInfo(0, false /*external*/,

    mLocked.displayWidth, mLocked.displayHeight, mLocked.displayOrientation);

    //outConfig->setDisplayInfo(0, true /*external*/,

    // mLocked.displayExternalWidth, mLocked.displayExternalHeight,

    // mLocked.displayOrientation);

    }

    }

    2.在setDisplayInfo中修改如下:

    void InputReaderConfiguration::setDisplayInfo(int32_t displayId, bool external,

    int32_t width, int32_t height, int32_t orientation) {

    LOGI("[inputreader] [setDisplayInfo] : width=%d height=%d orientation=%d",

    width, height, orientation);

    if (displayId == 0) {

    DisplayInfo& info = mExternalDisplay;

    info.width = width;

    info.height = height;

    info.orientation = orientation;

    DisplayInfo& minfo = mInternalDisplay;

    minfo.width = width;

    minfo.height = height;

    minfo.orientation = orientation;

    }

    }

    这样修改就将第一次传来的屏幕分辨率保存到两个不同变量中供不同情况使用。至此android4.0的屏幕校准问题解决

    展开全文
  • Android屏幕检测功能实现

    千次阅读 2019-04-06 03:02:40
    屏幕上滑动,若满都能感应到滑动,则完好。展示如下: 实现概述 1、隐藏activity的ActionBar和下方的虚拟按键; 2、自定义MyGridLayout继承自GridLayout,目的是为了处理触摸事件分发,重写其内的...
  • 我需要在后台服务中检测屏幕是否被触摸(并弹出一条消息).但是,我在后台服务中检测屏幕是否被触摸有问题而不影响使用智能手机的用户.当我说“在后台检测”时,我的意思是应用程序的效果不会干扰用户在屏幕上做的事情....
  • 触屏触摸活动测试代码,声明ImageView变量,声明相关变量作为存储图片宽高,位置使用,声明存储屏幕的分辨率变量,取得屏幕对象,取得屏幕解析像素,通过findViewById构造器创建ImageView对象,将图片从Drawable赋值给...
  • Android 屏幕触摸监听小测试

    千次阅读 2012-12-14 10:54:21
    package com.example.touchtest; import android.app.Activity; import android.os.Bundle; import android.view.MotionEvent; import android.view.View; import android.view.View.OnTouchListener; import
  • Android 触摸屏幕生成气泡效果,当时写这个例子是在Android 5.0 版本的时候,目前在新版本下未做测试。  您可以对“Android 触摸屏幕生成气泡效果”进行扩展,气泡效果很轻柔,很多人喜欢。本源码测试截图来源于...
  • Android 屏幕检查apk

    2017-11-22 16:04:19
    此app用作Android 平板,手机的屏幕检查,包括坏点检测,多点触摸检测。
  • Android屏幕保持唤醒

    2021-06-03 01:15:47
    1、锁的类型PowerManager中各种锁的类型对CPU 、屏幕、键盘的影响:PARTIAL_WAKE_LOCK : 保持CPU 运转,屏幕和键盘灯有可能是关闭的。SCREEN_DIM_WAKE_LOCK:保持CPU 运转,允许保持屏幕显示但有可能是灰的,允许...
  • Android TouchCircle触摸测试【源代码】,canvas可以看做画板,创建画笔。
  • 背景本文主要实现一个Android系统,调试两个相同的TP设备,使用同一个TP的驱动。最终实现结果,两个TP都可以控制Android,正常报点。 实现过程:硬件连接介绍: 软件实现:在dtsi文件添加两个TP设备(名字不一样):LA...
  • 基于android平台实现串口触摸屏的功能。在RK3026 ANDROID4.2平台上测试OK,没任何BUG。基本功能为:MCU通过串口将触摸屏的报点信息传递给平板电脑,平板电脑实现从串口得到的触摸信息上传到应用层。
  • 不过另一方面,虽然微软为触摸操作做了很多努力,但Win系统中的一些软件仍未能很好地支持触摸屏——光是点那个关闭按钮,就够触摸屏瞎摸半天了。没有鼠标的话,要怎么样才能顺利操作传统的Win软件?今天小编就来为...
  • Android屏幕多点触摸

    2012-10-22 14:08:31
    实现Android屏幕多点触摸测试的实现功能,测试屏幕是否支持多点触摸
  • 那么小编为大家提供一款专业的手机测小工具,通过它你能清楚的知道,你手机屏幕质量如何,品质过不过关,接下来一起看看这款小工具吧!Display Tester就是一款非常专业的、令你能够轻松看到手机屏幕瑕疵的App。...
  • linux触摸屏linux触摸屏(一)编写触摸屏应用linux触摸屏(二)使用tslib触摸屏驱动一般是采用input子系统驱动框架实现的,所以应用层接口要遵循input框架的接口,在介绍触摸屏应用编写前,先来学习input应用编程一、...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 20,735
精华内容 8,294
关键字:

安卓屏幕触摸测试