手机没获取没问题小米平板5pro一直获取不到如图所示图1是手机图二是平板图三是代码
该回答引用于gpt与自己的思路:
您好,我可以尝试为您解决这个问题。
根据您提供的代码和图片,看起来您正在使用Windows API函数 GetTouchInputInfo()
来获取触摸输入信息。然而,该函数仅适用于 Windows 操作系统,并且在 Android 系统或其他移动设备上不适用。
要在 Android 设备上获取触摸输入信息,您需要使用 Android 提供的触摸事件接口。具体来说,您可以注册一个 View.OnTouchListener
监听器来捕获触摸事件并处理它们。以下是一个示例代码,可以帮助您开始:
public class MainActivity extends AppCompatActivity implements View.OnTouchListener {
private static final String TAG = "TouchTest";
private static final int HISTORY_SIZE = 3;
private TextView mTextView;
private float[] mX = new float[HISTORY_SIZE];
private float[] mY = new float[HISTORY_SIZE];
private float[] mPressure = new float[HISTORY_SIZE];
private int mPointerCount;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
mTextView = findViewById(R.id.textview);
mTextView.setOnTouchListener(this);
}
@Override
public boolean onTouch(View v, MotionEvent event) {
final int action = event.getActionMasked();
switch (action) {
case MotionEvent.ACTION_DOWN:
case MotionEvent.ACTION_POINTER_DOWN: {
final int pointerIndex = event.getActionIndex();
final int pointerId = event.getPointerId(pointerIndex);
mX[pointerId] = event.getX(pointerIndex);
mY[pointerId] = event.getY(pointerIndex);
mPressure[pointerId] = event.getPressure(pointerIndex);
mPointerCount++;
break;
}
case MotionEvent.ACTION_UP:
case MotionEvent.ACTION_POINTER_UP: {
final int pointerIndex = event.getActionIndex();
final int pointerId = event.getPointerId(pointerIndex);
mX[pointerId] = 0;
mY[pointerId] = 0;
mPressure[pointerId] = 0;
mPointerCount--;
break;
}
case MotionEvent.ACTION_MOVE: {
for (int i = 0; i < event.getPointerCount(); i++) {
final int pointerId = event.getPointerId(i);
if (pointerId < HISTORY_SIZE) {
mX[pointerId] = event.getX(i);
mY[pointerId] = event.getY(i);
mPressure[pointerId] = event.getPressure(i);
}
}
break;
}
}
// Display touch information on screen
StringBuilder sb = new StringBuilder();
sb.append("Pointers: ").append(mPointerCount).append("\n");
for (int i = 0; i < HISTORY_SIZE; i++) {
sb.append(String.format(Locale.US, "Pointer%d: (%.2f, %.2f, %.2f)\n",
i, mX[i], mY[i], mPressure[i]));
}
mTextView.setText(sb);
return true;
}
}
这个代码将在触摸时捕获所有手指的位置、压力等信息,并将它们显示在屏幕上。您可以根据自己的需求进行修改和扩展。
希望这能帮到您!
参考GPT和自己的思路:
根据代码和截图,可以发现问题可能在于获取事件的方式不一致导致触摸点无法获取。建议尝试使用同一种获取事件的方式,并检查相关代码是否正确。另外,也可以尝试使用多种方法获取触摸点,比如使用 onTouchEvent 方法等,以便更全面地了解触摸点情况。最后,如果问题仍无法解决,可能需要联系小米平板5pro的厂商或者技术支持部门,获取更详细的解决方案。
参考GPT和自己的思路:
根据您提供的情况,问题很可能出现在您的代码中。可能有两个原因:
您没有正确处理平板设备的触摸事件。事实上,平板设备的触摸事件和手机有很大的不同。对于一些特定的平板设备,您需要使用不同的方法来获取屏幕触摸点。具体来说,请看您的代码中是否有针对平板设备的特定处理方法。
您的代码在平板设备上运行时有问题。您的代码只能在手机上正确运行,这有可能是由于您的代码有些地方依赖了手机的硬件,而平板设备的硬件不同。这时候,您需要重新审视您的代码,并进行适当的调整,以适应平板设备的特点。
建议您仔细检查代码中的问题,并在针对平板设备的触摸事件处理方面加入适当的改进。
参考GPT和自己的思路:
根据您提供的截图和代码,可以看出可能存在以下问题:
对于这个问题,可以尝试以下解决方案:
具体实现方法可以参考 Android 官方文档,例如:https://developer.android.com/training/gestures/multi?hl=zh-cn。
参考GPT和自己的思路,您可以使用Android中的 MotionEvent 类来获取屏幕触摸点的位置。以下是一个简单的示例代码,演示如何在您的应用程序中获取触摸点的位置:
@Override
public boolean onTouchEvent(MotionEvent event) {
int action = event.getActionMasked();
int pointerIndex = event.getActionIndex();
switch(action) {
case MotionEvent.ACTION_DOWN:
case MotionEvent.ACTION_POINTER_DOWN:
// A pointer has gone down (one or more new pointers have touched the screen).
// Get its index and its position.
int pointerId = event.getPointerId(pointerIndex);
float x = event.getX(pointerIndex);
float y = event.getY(pointerIndex);
// Do something with the pointer position
break;
case MotionEvent.ACTION_MOVE:
// One or more pointers have moved.
// Loop through all the pointers and get their positions.
for (int i = 0; i < event.getPointerCount(); i++) {
pointerId = event.getPointerId(i);
x = event.getX(i);
y = event.getY(i);
// Do something with the pointer position
}
break;
case MotionEvent.ACTION_UP:
case MotionEvent.ACTION_POINTER_UP:
// A pointer has gone up (one or more pointers have stopped touching the screen).
// Get its index and its position.
pointerId = event.getPointerId(pointerIndex);
x = event.getX(pointerIndex);
y = event.getY(pointerIndex);
// Do something with the pointer position
break;
case MotionEvent.ACTION_CANCEL:
// The current gesture has been canceled.
// Do something to clean up any state related to this gesture.
break;
}
return true;
}
在上面的示例代码中,MotionEvent对象表示屏幕上的一次触摸事件。您可以使用 getActionMasked() 方法来获取触摸事件的类型(例如,按下、移动、释放)。您还可以使用 getPointerId() 方法来获取触摸点的唯一标识符,并使用 getX() 和 getY() 方法来获取触摸点的 x 和 y 坐标。注意,在多点触控的情况下,您需要使用 getPointerCount() 方法来获取所有触摸点的数量,并使用一个循环来获取它们的位置。
请确保您的应用程序具有适当的权限来访问屏幕触摸事件。您可以在 AndroidManifest.xml 文件中添加以下权限:
<uses-permission android:name="android.permission.INTERNET"/>
<uses-permission android:name="android.permission.VIBRATE"/>
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/>
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE"/>
<uses-permission android:name="android.permission.CHANGE_WIFI_STATE"/>
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"/>
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION"/>
<uses-permission android:name="android.permission.ACCESS_LOCATION"/>
<uses-permission android:name="android.permission.CAMERA"/>
<uses-permission android:name="android.permission.RECORD_AUDIO"/>
<uses-permission android:name="android.permission.MODIFY_AUDIO_SETTINGS"/>
<uses-permission android:name="android.permission.BLUETOOTH"/>
<uses-permission android:name="android.permission.BLUETOOTH_ADMIN"/>
<uses-permission android:name="android.permission.WAKE_LOCK"/>
<uses-permission android:name="android.permission.READ_PHONE_STATE"/>
<uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED"/>
真是什么问题都回答,我用mac可以识别文字代码,你们行吗
看看平板上面是不是缺少什么权限或者屏幕的获取错误。