基本信息
源码名称:RK 压力测试demo
源码大小:5.48M
文件格式:.tgz
开发语言:Java
更新时间:2020-03-19
   友情提示:(无需注册或充值,赞助后即可获取资源下载链接)

     嘿,亲!知识可是无价之宝呢,但咱这精心整理的资料也耗费了不少心血呀。小小地破费一下,绝对物超所值哦!如有下载和支付问题,请联系我们QQ(微信同号):813200300

本次赞助数额为: 2 元 
   源码介绍

此demo 是针对RK 平台的硬件测试demo

包括DDR等外设的测试,需要放到源码中进行编译

package com.cghs.stresstest.util;

import android.content.Context;
import android.hardware.input.InputManager;
import android.os.SystemClock;
import android.util.Log;
import android.view.InputDevice;
import android.view.KeyEvent;
import android.view.MotionEvent;

public class NativeInputManager {

 public static void injectKeyEvent(KeyEvent ev, boolean sync) {
        long downTime = ev.getDownTime();
        long eventTime = ev.getEventTime();

        int action = ev.getAction();
        int code = ev.getKeyCode();
        int repeatCount = ev.getRepeatCount();
        int metaState = ev.getMetaState();
        int deviceId = ev.getDeviceId();
        int scancode = ev.getScanCode();
        int source = ev.getSource();
        int flags = ev.getFlags();

        if (source == InputDevice.SOURCE_UNKNOWN) {
            source = InputDevice.SOURCE_KEYBOARD;
        }

        if (eventTime == 0) eventTime = SystemClock.uptimeMillis();
        if (downTime == 0) downTime = eventTime;

        KeyEvent newEvent = new KeyEvent(downTime, eventTime, action, code, repeatCount, metaState,
                deviceId, scancode, flags | KeyEvent.FLAG_FROM_SYSTEM, source);

        InputManager.getInstance().injectInputEvent(newEvent,
                sync ? (InputManager.INJECT_INPUT_EVENT_MODE_WAIT_FOR_FINISH)
                        : (InputManager.INJECT_INPUT_EVENT_MODE_WAIT_FOR_RESULT));
    }

 public static void injectPointerEvent(MotionEvent ev) {
        MotionEvent newEvent = MotionEvent.obtain(ev);
       
        if ((newEvent.getSource() & InputDevice.SOURCE_CLASS_POINTER) == 0) {
            newEvent.setSource(InputDevice.SOURCE_TOUCHSCREEN);
        }
       
        InputManager.getInstance().injectInputEvent(newEvent, InputManager.INJECT_INPUT_EVENT_MODE_ASYNC);
    }

  public static void sendKeyDownUpSync(final int keyCode) {
         new Thread(new Runnable() {
             @Override
             public void run() {
                 KeyEvent keDown = new KeyEvent(KeyEvent.ACTION_DOWN, keyCode);
                 injectKeyEvent( keDown, true);

                 KeyEvent keUp = new KeyEvent(KeyEvent.ACTION_UP, keyCode);
                 injectKeyEvent( keUp, true);
             }
         }).start();
     }

 
  public static void sendTouchEventSync(final float x, final float y) {
         new Thread(new Runnable() {
        
             @Override
             public void run() {
                 //ACTION_DOWN
                 long downTime ;
                 long eventTime ;
                 try {
                 downTime = android.os.SystemClock.uptimeMillis();
                 eventTime = android.os.SystemClock.uptimeMillis();
                 MotionEvent me = MotionEvent.obtain(downTime, eventTime 100, MotionEvent.ACTION_DOWN,
                         x, y, 0);
                 injectPointerEvent(me);
                 } catch (SecurityException e) {
                     Log.d("","MotionEvent.ACTION_DOWN");
                 }
                
                 //ACTION_UP
                 try {
                 downTime = android.os.SystemClock.uptimeMillis();
                 eventTime = android.os.SystemClock.uptimeMillis();

                 MotionEvent me_up = MotionEvent.obtain(downTime, eventTime 100, MotionEvent.ACTION_UP,
                         x, y, 0);
                 injectPointerEvent(me_up);
                 } catch (SecurityException e) {
                  Log.d("","MotionEvent.ACTION_UP");
                 }
             }
         }).start();
     }
}