Metadata-Version: 2.1
Name: sendevent-touch
Version: 0.11
Summary: Sendevents for faster / more reliable touch/longtouch events when using ADB
Home-page: https://github.com/hansalemaos/sendevent_touch
Author: Johannes Fischer
Author-email: <aulasparticularesdealemaosp@gmail.com>
License: MIT
Keywords: bluestacks,adb,touch,tap,getevent,sendevent
Classifier: Development Status :: 4 - Beta
Classifier: Programming Language :: Python :: 3 :: Only
Classifier: Programming Language :: Python :: 3.9
Classifier: Topic :: Scientific/Engineering :: Visualization
Classifier: Topic :: Software Development :: Libraries :: Python Modules
Classifier: Topic :: Text Editors :: Text Processing
Classifier: Topic :: Text Processing :: General
Classifier: Topic :: Text Processing :: Indexing
Classifier: Topic :: Text Processing :: Filters
Classifier: Topic :: Utilities
Description-Content-Type: text/markdown
License-File: LICENSE.rst


# Send touch/longtouch events to BlueStacks/Android





```python

$pip install sendevent-touch



from sendevent_touch import SendEventTouch



sendtouch = SendEventTouch(

    adb_path="C:\\Users\\Gamer\\AppData\\Local\\Android\\Sdk\\platform-tools\\adb.exe",

    deviceserial="localhost:5735",

    sdcard="/storage/emulated/0/",  # it is probably better to pass the path, not the symlink

    tmp_folder_on_sd_card="AUTOMAT",  # if the folder doesn't exist, it will be created

    bluestacks_divider=32767,

    use_bluestacks_coordinates=True,  # Recalculates the BlueStacks coordinates https://stackoverflow.com/a/73733261/15096247

)



sendtouch.connect_to_adb()



# Useful if you want to repeat the click

df_click1 = sendtouch.get_dataframe_for_clicks(50, 50)

sendtouch.touch_df(

    df_click1, struct_folder="struct real"

)  # "struct real" will use the recalculated coordinates for BlueStacks





# Touching without returning a DataFrame

sendtouch.touch(520, 40, struct_folder="struct real")





# Same thing for longtouch, duration is in seconds

sendtouch.longtouch_df(df_click1, duration=2.5, struct_folder="struct real")

sendtouch.longtouch(520, 40, duration=3.1, struct_folder="struct real")





# Using struct_folder="struct" should work for any rooted Android device, but I haven't checked it!

# I would be grateful for any feedback!

df_click1 = sendtouch.get_dataframe_for_clicks(50, 50)

sendtouch.touch_df(df_click1, struct_folder="struct")

sendtouch.touch(520, 40, struct_folder="struct")





sendtouch.longtouch_df(df_click1, duration=2, struct_folder="struct")

sendtouch.longtouch(520, 40, duration=3, struct_folder="struct")



#%timeit sendtouch.touch_df(df_click1 ,struct_folder="struct real")

# 109 ms ± 4.62 ms per loop (mean ± std. dev. of 7 runs, 10 loops each)

#%timeit subprocess.run('adb shell input tap 50 50')

# 197 ms ± 1.54 ms per loop (mean ± std. dev. of 7 runs, 10 loops each)



```



### Tested against Windows 10 / Python 3.9.13 / BlueStacks 5



It should also work with any rooted Android device, the only problem might be the "bluestacks_divider".

[https://stackoverflow.com/a/73733261/15096247]()



But changing the code (if necessary) shouldn't be a big thing. 

Since my cell phone is not rooted, and I have no intention of rooting it, I cannot test the module against a physical Android device. (I would be grateful for any feedback)



