এক্স এবং ওয়াই ম্যানুয়ালি সমন্বয় দেওয়ার সময় অ্যান্ড্রয়েডের সাথে কোনও স্পর্শ ইভেন্টের অনুকরণ কীভাবে করবেন?
এক্স এবং ওয়াই ম্যানুয়ালি সমন্বয় দেওয়ার সময় অ্যান্ড্রয়েডের সাথে কোনও স্পর্শ ইভেন্টের অনুকরণ কীভাবে করবেন?
উত্তর:
ভ্যালেন্টিন রচারের পদ্ধতিটি যদি আপনি আপনার দৃষ্টিভঙ্গি প্রসারিত করেন তবে কাজ করে তবে আপনি যদি কোনও ইভেন্ট শ্রোতা ব্যবহার করেন তবে এটি ব্যবহার করুন:
view.setOnTouchListener(new OnTouchListener()
{
public boolean onTouch(View v, MotionEvent event)
{
Toast toast = Toast.makeText(
getApplicationContext(),
"View touched",
Toast.LENGTH_LONG
);
toast.show();
return true;
}
});
// Obtain MotionEvent object
long downTime = SystemClock.uptimeMillis();
long eventTime = SystemClock.uptimeMillis() + 100;
float x = 0.0f;
float y = 0.0f;
// List of meta states found here: developer.android.com/reference/android/view/KeyEvent.html#getMetaState()
int metaState = 0;
MotionEvent motionEvent = MotionEvent.obtain(
downTime,
eventTime,
MotionEvent.ACTION_UP,
x,
y,
metaState
);
// Dispatch touch event to view
view.dispatchTouchEvent(motionEvent);
মোশনইভেন্ট অবজেক্টটি পাওয়ার বিষয়ে আরও তথ্যের জন্য এখানে একটি দুর্দান্ত উত্তর: অ্যান্ড্রয়েড: কীভাবে একটি মোশনইভেন্ট তৈরি করবেন?
downTime
ব্যবহারকারীর পর্দায় স্পর্শ করার সময় eventTime
হবে যখন এই ক্ষেত্রে যখন ব্যবহারকারী তাদের আঙুল উপরে তুলবে ( ACTION_UP
)। দু'টি একই থাকলে এটি এখনও কাজ করবে কিনা তা আমি নিশ্চিত নই। আপনি এটি পরীক্ষা করে আপনার ফলাফল পোস্ট করতে পারেন।
এখানে একটি মনিকার্নার স্ক্রিপ্ট যা স্পর্শ প্রেরণ করে এবং একটি অ্যাপ্লিকেশনে টেনে নিয়ে যায়। আমার অ্যাপ্লিকেশনটি দ্রুত পুনরাবৃত্তিমূলক সোয়াইপ অঙ্গভঙ্গিগুলি পরিচালনা করতে পারে তা পরীক্ষা করার জন্য এটি ব্যবহার করে আসছি।
# This is a monkeyrunner jython script that opens a connection to an Android
# device and continually sends a stream of swipe and touch gestures.
#
# See http://developer.android.com/guide/developing/tools/monkeyrunner_concepts.html
#
# usage: monkeyrunner swipe_monkey.py
#
# Imports the monkeyrunner modules used by this program
from com.android.monkeyrunner import MonkeyRunner, MonkeyDevice
# Connects to the current device
device = MonkeyRunner.waitForConnection()
# A swipe left from (x1, y) to (x2, y) in 2 steps
y = 400
x1 = 100
x2 = 300
start = (x1, y)
end = (x2, y)
duration = 0.2
steps = 2
pause = 0.2
for i in range(1, 250):
# Every so often inject a touch to spice things up!
if i % 9 == 0:
device.touch(x2, y, 'DOWN_AND_UP')
MonkeyRunner.sleep(pause)
# Swipe right
device.drag(start, end, duration, steps)
MonkeyRunner.sleep(pause)
# Swipe left
device.drag(end, start, duration, steps)
MonkeyRunner.sleep(pause)
MonkeyDevice.DOWN_AND_UP
পরিবর্তে আপনার ব্যবহার করা উচিত 'DOWN_AND_UP'
। ( DOWN_AND_UP
এটি ডিফল্ট, সুতরাং আপনার কোডটি এখনও কাজ করে)
UP
ক্রিয়া করার পরে এটি পুনরায় বুট হয়
টাচ ইভেন্টটি অনুকরণ করতে অ্যাডবি শেল কমান্ডগুলি ব্যবহার করুন
adb shell input tap x y
and also
adb shell sendevent /dev/input/event0 3 0 5
adb shell sendevent /dev/input/event0 3 1 29
যদি আমি স্পষ্টভাবে বুঝতে পারি তবে আপনি এইটি অগ্রগতিতে করতে চান। তারপরে, আপনি অন টুচেন্ট পদ্ধতিটি ব্যবহার করতে View
এবং MotionEvent
আপনার প্রয়োজনীয় স্থানাঙ্কগুলির সাথে একটি তৈরি করতে পারেন ।
আপনার উচিত নতুন বানরকুনারকে একবার যেতে। সম্ভবত এটি আপনার সমস্যার সমাধান করতে পারে। আপনি পরীক্ষার জন্য এটিতে কীকোডগুলি রেখেছেন, স্পর্শ ইভেন্টগুলিও সম্ভবত সম্ভব।
adb shell monkey
এটা monkeyrunner
যা বিভিন্ন টুল।
বানর স্ক্রিপ্টটি ব্যবহার করার সময় আমি লক্ষ্য করেছি যে ডিসপ্যাচপ্রেস (KEYCODE_BACK) এমন কিছুই করছে না যা সত্যিই স্তন্যপান করে। বেশিরভাগ ক্ষেত্রে এটি ক্রিয়াকলাপটি মূল ইভেন্টটি গ্রাস করে না এমন কারণে ঘটে। এই সমস্যাটির সমাধানটি হচ্ছে একটি ক্রমানুসারে বানর স্ক্রিপ্ট এবং অ্যাডবি শেল ইনপুট কমান্ডের মিশ্রণটি ব্যবহার করা।
1 বানরের স্ক্রিপ্ট ব্যবহার করে কিছু দুর্দান্ত সময় নিয়ন্ত্রণ দেওয়া হয়েছিল। ক্রিয়াকলাপের জন্য নির্দিষ্ট পরিমাণের জন্য অপেক্ষা করুন এবং এটি একটি ব্লক করা অ্যাডবি কল।
2 অবশেষে অ্যাডবি শেল ইনপুট কেভেন্ট 4 প্রেরণ করলে চলমান এপিপি শেষ হবে।
ইজি
অ্যাডবি শেল বানর -p com.my.application -v -v -v -f /sdcard/monkey_script.txt 1 এডিবি
শেল ইনপুট কেভেন্ট 4