অ্যান্ড্রয়েডে কোনও স্পর্শ ইভেন্টের অনুকরণ কীভাবে করবেন?


101

এক্স এবং ওয়াই ম্যানুয়ালি সমন্বয় দেওয়ার সময় অ্যান্ড্রয়েডের সাথে কোনও স্পর্শ ইভেন্টের অনুকরণ কীভাবে করবেন?


4
আপনি নীচে কিছু কার্যক্ষম উত্তর পাচ্ছেন, কেবল মনে রাখবেন তারা কেবলমাত্র এমন অ্যাপ্লিকেশনগুলিতে কাজ করবে যেখানে আপনি ছোট পরিবর্তন করতে পারেন। অন্যান্য অ্যাপ্লিকেশনগুলির জন্য আপনি সংশোধন করতে পারবেন না, আপনার ইভেন্টগুলি ইনজেক্ট করার জন্য একটি মূল প্ল্যাটফর্মের প্রয়োজন হবে।
ক্রিস স্ট্রাটন

প্রতি 10 সেকেন্ডে x, y এ স্পর্শ করার জন্য এবং এটিকে ন্যূনতম করার জন্য কি অ্যাপ্লিকেশন তৈরি করা সম্ভব, তবে x, y এ স্পর্শ করা অবিরত থাকবে?
ডাঃ জ্যাকি

কোনও রুট প্রয়োজনীয়তা ছাড়াই আমার উত্তর পরীক্ষা করুন। :)
আনন্দ বার্কি ফিলিপস

উত্তর:


110

ভ্যালেন্টিন রচারের পদ্ধতিটি যদি আপনি আপনার দৃষ্টিভঙ্গি প্রসারিত করেন তবে কাজ করে তবে আপনি যদি কোনও ইভেন্ট শ্রোতা ব্যবহার করেন তবে এটি ব্যবহার করুন:

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);

মোশনইভেন্ট অবজেক্টটি পাওয়ার বিষয়ে আরও তথ্যের জন্য এখানে একটি দুর্দান্ত উত্তর: অ্যান্ড্রয়েড: কীভাবে একটি মোশনইভেন্ট তৈরি করবেন?


4
উত্তম উত্তর, তবে অ্যান্ড্রয়েড শিক্ষানবিস হিসাবে অনটচলিস্টনার আমাকে বিভ্রান্ত করেছে। আমি এখন বুঝতে পেরেছি যে শ্রোতা সিমুলেশনটির প্রয়োজনীয় নয়। কেবলমাত্র প্রয়োজনীয় যা আপনার কোডের দ্বিতীয়ার্ধে মোশনইভেন্ট।
ব্যবহারকারী 1532390

আপনি ইভেন্ট টাইমে 100 মিলিস যুক্ত করছেন কেন? ডাউনটাইম এবং ইভেন্টটাইম একই হলে এটি কাজ করে না?
ইনস্টল করুন মনিকা-ডোর দুহ

4
@ টিউটর - শুধুমাত্র একটি বাস্তব স্পর্শ অনুকরণ করতে। downTimeব্যবহারকারীর পর্দায় স্পর্শ করার সময় eventTimeহবে যখন এই ক্ষেত্রে যখন ব্যবহারকারী তাদের আঙুল উপরে তুলবে ( ACTION_UP)। দু'টি একই থাকলে এটি এখনও কাজ করবে কিনা তা আমি নিশ্চিত নই। আপনি এটি পরীক্ষা করে আপনার ফলাফল পোস্ট করতে পারেন।
আজদেব

আমি কীভাবে ভিউ অবজেক্টটি ঘোষণা করব?
TheLogicGuy

ঠিক আছে .. বামে, ডান, উপরে এবং নীচে সোয়াইপ অঙ্গভঙ্গির সম্পর্কে কী? ACTION_MOVE ব্যবহার করে এটি কীভাবে করবেন?
রমেশ_ডি

24

এখানে একটি মনিকার্নার স্ক্রিপ্ট যা স্পর্শ প্রেরণ করে এবং একটি অ্যাপ্লিকেশনে টেনে নিয়ে যায়। আমার অ্যাপ্লিকেশনটি দ্রুত পুনরাবৃত্তিমূলক সোয়াইপ অঙ্গভঙ্গিগুলি পরিচালনা করতে পারে তা পরীক্ষা করার জন্য এটি ব্যবহার করে আসছি।

# 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)

4
এর MonkeyDevice.DOWN_AND_UPপরিবর্তে আপনার ব্যবহার করা উচিত 'DOWN_AND_UP'। ( DOWN_AND_UPএটি ডিফল্ট, সুতরাং আপনার কোডটি এখনও কাজ করে)
ভালারডোহেরিস

অন্য ডিভাইসে (নেক্সাস 10) চেষ্টা করা হয়েছে, কেবলমাত্র UPক্রিয়া করার পরে এটি পুনরায় বুট হয়
ইকুইডাময়েড

আমি কি এটি একটি পরীক্ষারবিহীন ক্লাসে ব্যবহার করতে পারি?
ডানিয়া


1

যদি আমি স্পষ্টভাবে বুঝতে পারি তবে আপনি এইটি অগ্রগতিতে করতে চান। তারপরে, আপনি অন ​​টুচেন্ট পদ্ধতিটি ব্যবহার করতে Viewএবং MotionEventআপনার প্রয়োজনীয় স্থানাঙ্কগুলির সাথে একটি তৈরি করতে পারেন ।


1

আপনার উচিত নতুন বানরকুনারকে একবার যেতে। সম্ভবত এটি আপনার সমস্যার সমাধান করতে পারে। আপনি পরীক্ষার জন্য এটিতে কীকোডগুলি রেখেছেন, স্পর্শ ইভেন্টগুলিও সম্ভবত সম্ভব।


4
কিভাবে আমাকে monkeyrunner ইনস্টল করতে জানিবেন। অ্যাডিবি monkeyrunner স্বীকৃতি দিচ্ছে না
ইন্দিরা

এটি অ্যাডবির ইউআই এক্সসারসিজার বানরের সাথে সম্পর্কিত নয়। আপনি বিজ্ঞাপনটির 9 টি পুনর্বিবেচনার সরঞ্জাম ডিরেক্টরিতে monkeyrunner পাবেন।
কীবোর্ডসুরফার

আমার উত্তরের মধ্যে আমি যে লিঙ্কটি দিয়েছি তাও দেখুন। এটি monkeyrunner সম্পর্কিত গুগলের সরবরাহিত তথ্যের দিকে পরিচালিত করে।
কী-

আমি "./adb শেল বানর" দিয়ে চেষ্টা করেছি। তবে স্পর্শ ইভেন্টটি চালাতে পারেনি
ইন্দিরা

তাই নয় কি adb shell monkeyএটা monkeyrunnerযা বিভিন্ন টুল।
কিবোর্ডসুরফার

0

বানর স্ক্রিপ্টটি ব্যবহার করার সময় আমি লক্ষ্য করেছি যে ডিসপ্যাচপ্রেস (KEYCODE_BACK) এমন কিছুই করছে না যা সত্যিই স্তন্যপান করে। বেশিরভাগ ক্ষেত্রে এটি ক্রিয়াকলাপটি মূল ইভেন্টটি গ্রাস করে না এমন কারণে ঘটে। এই সমস্যাটির সমাধানটি হচ্ছে একটি ক্রমানুসারে বানর স্ক্রিপ্ট এবং অ্যাডবি শেল ইনপুট কমান্ডের মিশ্রণটি ব্যবহার করা।

1 বানরের স্ক্রিপ্ট ব্যবহার করে কিছু দুর্দান্ত সময় নিয়ন্ত্রণ দেওয়া হয়েছিল। ক্রিয়াকলাপের জন্য নির্দিষ্ট পরিমাণের জন্য অপেক্ষা করুন এবং এটি একটি ব্লক করা অ্যাডবি কল।
2 অবশেষে অ্যাডবি শেল ইনপুট কেভেন্ট 4 প্রেরণ করলে চলমান এপিপি শেষ হবে।

ইজি

অ্যাডবি শেল বানর -p com.my.application -v -v -v -f /sdcard/monkey_script.txt 1 এডিবি
শেল ইনপুট কেভেন্ট 4


স্ট্যাক ওভারফ্লোতে স্বাগতম! আপনার উত্তর পোস্ট করার জন্য ধন্যবাদ! দয়া করে স্ব-প্রচারের এফএকিউ সাবধানে পড়তে ভুলবেন না sure এছাড়াও নোট করুন যে প্রতিবার আপনার নিজের সাইট / পণ্যের সাথে লিঙ্ক করার পরে আপনাকে একটি অস্বীকার পোস্ট করা আবশ্যক । আমি লিঙ্কটি সরিয়েছি। পাশাপাশি কোনও প্রকাশ না যুক্ত করে এটিকে আবার যুক্ত করবেন না।
অ্যান্ড্রু বারবার

-6

মোশনইভেন্টটি কেবল স্ক্রিন স্পর্শ করেই উত্পন্ন হয়।


10
আপনি মোশনইভেন্টের স্ট্যাটিক প্রাপ্ত পদ্ধতিগুলির একটি ব্যবহার করে ম্যানুয়ালি একটি তৈরি করতে পারেন।
আজদেব
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.