Obsah. Bluetooth BluetoothAdapter Síťová připojení ConnectivityManager Wireless Lan WifiManager Hlasový vstup. Přehrávač médií. Schránka.

Podobné dokumenty
Obsah. Životní cyklus activity Context Intent Spouštění aktivit Interakce s uživatelem. Toast. (c) Miroslav Balík, Ondřej Kroupa, Martin Pelant

1. Téma 12 - Textové soubory a výjimky

3. ŽIVOTNÍ CYKLUS ACTIVITY

Začínáme s vývojem pro Android

(c) Miroslav Balík, Ondřej Kroupa, Martin Pelant 11/29/ přednáška. Android projekt. Manifest. Activity. Uživatelské rozhraní (základy)

Android 100% Java telefon. Petr Musil

Příklad aplikace Klient/Server s Boss/Worker modelem (informativní)

Příklad zobrazení toastu s vlastním designem

KMI / TMA. Tvorba mobilních aplikací. 8. seminář ZS 2017/2018 ČTVRTEK 13:15-15:45

Uživatelské rozhraní. Layouty FrameLayout LinearLayout RelativeLayout TableLayout ScrollView Taby Dialogy ViewFlipper 11/29/11

Programování v Javě I. Leden 2008

Michal Krátký. Úvod do programovacích jazyků (Java), 2006/2007

OMO. 4 - Creational design patterns A. Singleton Simple Factory Factory Method Abstract Factory Prototype Builder IoC

NIO. Aplikační programování v Javě (BI-APJ) - 12 Ing. Jiří Daněček Katedra softwarového inženýrství Fakulta informačních technologií ČVUT Praha

(c) Miroslav Balík, Ondřej Kroupa, Martin Pelant 11/29/ přednáška. Práce na pozadí. Služby. Notifikace

Programování v Javě I. Únor 2009

Vláknové programování část V

JAVA Android Java, letní semestr

UJO Framework. revoluční architektura beans. verze

KTE / ZPE Informační technologie

Teoretické minimum z PJV

<surface name="pozadi" file="obrazky/pozadi/pozadi.png"/> ****************************************************************************

Algoritmizace a programování

11/29/11. (c) Miroslav Balík, Ondřej Kroupa, Martin Pelant. 11. Přednáška. Broadcast receiver Timer Alarmy Widgety

Java a XML. 10/26/09 1/7 Java a XML

Java - výjimky. private void vstup() throws IOException {... }

Výčtový typ strana 67

RMI Remote Method Invocation

Regulární výrazy. Vzory

Obsah přednášky 7. Základy programování (IZAPR) Přednáška 7. Parametry metod. Parametry, argumenty. Parametry metod.

IMPLEMENTACE INFORMAČNÍHO SYSTÉMU VIDIUM V JAZYCE JAVA

Seznamy a iterátory. Kolekce obecně. Rozhraní kolekce. Procházení kolekcí

20. Projekt Domácí mediotéka

Datové struktury. alg12 1

Začínáme NSZ-GS7. Síťový multimediální přehrávač. Obsah obrazovek, způsob ovládání a technické parametry se mohou změnit bez předchozího upozornění.

Zápis programu v jazyce C#

VYSOKÁ ŠKOLA POLYTECHNICKÁ JIHLAVA Katedra elektrotechniky a informatiky Obor Aplikovaná informatika

Algoritmy a datové struktury

Distribuované systémy a výpočty

KMI / TMA Tvorba mobilních aplikací. 6. seminář ZS 2016/2017 Středa 13:15-15:45

Uživatelský manuál - základ PiPO M6

Webové služby a XML. Obsah přednášky. Co jsou to webové služby. Co jsou to webové služby. Webové služby a XML

PROMĚNNÉ, KONSTANTY A DATOVÉ TYPY TEORIE DATUM VYTVOŘENÍ: KLÍČOVÁ AKTIVITA: 02 PROGRAMOVÁNÍ 2. ROČNÍK (PRG2) HODINOVÁ DOTACE: 1

Vlákno odlehčený proces kód vlákna, zásobník privátní ostatní sdíleno s dalšími vlákny téhož procesu

Úvod do programování - Java. Cvičení č.4

Uživatelský manuál - základ PiPO P1

Typický prvek kolekce pro české řazení

log in AHD_DVR Průvodce rychlým startem První část: základní operace

11/29/11. (c) Miroslav Balík, Ondřej Kroupa, Martin Pelant. 12. Přednáška. Zjišťování polohy Google Mapy OverlayItem Zálohování.

B Series Waterproof Model. IP Kamera. Uživatelský manuál

Úvod do programovacích jazyků (Java)

HP-2000E UŽIVATELSKÝ MANUÁL

Vytváření a použití knihoven tříd

8 Třídy, objekty, metody, předávání argumentů metod

Pokud zadání nerozumíte nebo se vám zdá nejednoznačné, zeptejte se. Pište čitelně, nečitelná řešení nebudeme uznávat.

Michal Krátký. Úvod do programovacích jazyků (Java), 2006/2007

ANDROID. Ing. Ladislav Pešička

Class loader. každá třída (java.lang.class) obsahuje referenci na svůj class loader. Implementace class loaderu

Pokud zadání nerozumíte nebo se vám zdá nejednoznačné, zeptejte se. Pište čitelně, nečitelná řešení nebudeme uznávat.

Software pro vzdálenou laboratoř

Uživatelský manuál CZ. XtreamerTV Uživatelský manuál CZ

2015 GEOVAP, spol. s r. o. Všechna práva vyhrazena.

Úvod do programovacích jazyků (Java)

Uživatelský manuál - základ PiPO U2

Bezdrátová indukční smyčka Bluetooth ARTONE 3

SIMATIC S GPRS. Micro Automation. Promoters Meeting October Aplikace pro GPRS. Vzdálená stanice. Server SINAUT MICRO SC.

Copyright 2001, COM PLUS CZ a.s., Praha

Fingerprint Verification Control

Práce s textem. Třída Character. Třída Character. Třída Character. reprezentuje objekty zapouzdřující hodnotu typu char (boxing / unboxing)

Aplikace na přenos dat pomocí NFC

Práce se soubory v Javě

Třídy a objekty. Třídy a objekty. Vytvoření instance třídy. Přístup k atributům a metodám objektu. $z = new Zlomek(3, 5);

Úvod Virtuální kanál TCP Datagramová služba UDP URL TCP, UDP, URL. Fakulta elektrotechnická

Pokud zadání nerozumíte nebo se vám zdá nejednoznačné, zeptejte se. Pište čitelně, nečitelná řešení nebudeme uznávat.

Tablet DFS-T88 Android Návod k použití

Konstruktory a destruktory

Soubor jako posloupnost bytů

2) Napište algoritmus pro vložení položky na konec dvousměrného seznamu. 3) Napište algoritmus pro vyhledání položky v binárním stromu.

JAVA. Real-Time Java

PES lib (C + PASCAL) KNIHOVNY KOMUNIKAÈNÍCH FUNKCÍ 03/ PESlib KOMUNIKAČNÍ KNIHOVNY C, PASCAL 03/ stran 1

17. Projekt Trojúhelníky

Obsah přednášky 9. Skrývání informací. Skrývání informací. Zapouzdření. Skrývání informací. Základy programování (IZAPR, IZKPR) Přednáška 9

5 Rekurze a zásobník. Rekurzivní volání metody

Stručný obsah. Úvod 15. KAPITOLA 1 První kroky v systému Windows KAPITOLA 2 Hlavní panel a jeho možnosti 41. KAPITOLA 3 Soubory a složky 51

Pro kontrolu správného formátu hodnoty N použijeme metodu try-catch.

Gymnázium a Střední odborná škola, Rokycany, Mládežníků 1115

GUI. Systémová integrace pro desktopové aplikace

Bridge. Známý jako. Účel. Použitelnost. Handle/Body

Uživatelský manuál - základ PiPO U6

Fronta (Queue) Úvod do programování. Fronta implementace. Fronta implementace pomocí pole 1/4. Fronta implementace pomocí pole 3/4

Michal Krátký. Úvod do programovacích jazyků (Java), 2006/2007

Počítačové laboratoře bez tajemství aneb naučme se učit algoritmizaci a programování s využitím robotů CZ.1.07/1.3.12/

JAVA. Real-Time Java

III/2 Inovace a zkvalitnění výuky prostřednictvím ICT

Ing. Michal Martin. Spojení PLC CLICK s NA-9289

FLOW 33 BT Setup. Manuál k užívání nastavovacího softwaru FLOW 33 BT Setup prostřednictvím komunikace Bluetooth.

III/2 Inovace a zkvalitnění výuky prostřednictvím ICT

Bezdrátové sítě Wi-Fi Původním cíl: Dnes

RESTful API TAMZ 1. Cvičení 11

Fakulta elektrotechniky a informatiky Vysoká škola báňská - Technická univerzita Ostrava. Cvičení 5 POČÍTAČOVÁ OBRANA A ÚTOK - POU

Transkript:

Obsah Bluetooth BluetoothAdapter Síťová připojení ConnectivityManager Wireless Lan WifiManager Hlasový vstup Speech Input Přehrávač médií Media Player Schránka 2

3 Bluetooth Navrženo pro krátké vzdálenosti Nízká rychlost přenosu, relativně nízká spotřeba baterie Knihovna dostupná od verze 2.0 (SDK API 5) Od verze 2.1 je v Androidu povolena pouze šifrovaná komunikace Komunikace pouze mezi spárovanými zařízeními Spravováno pomocí následujících tříd: BluetoothAdapter BluetoothDevice BluetoothSocket BluetoothServerSocket Nevýhoda Nelze emulovat (pro testování jsou třeba aspoň dvě fyzická zařízení)

4 BluetoothAdapter Základní operace Vyhledávání jiných zažízení s Bluetooth Dotazování spárovaných zařízení Inicializace BluetoothDevice BluetoothServerSocket Čtení vlastností, zahájení vyhledávání zařízení, nalezení spárovaných zařízení: <uses-permission android:name="android.permission.bluetooth"/> Úprava nastavení: <uses-permission android:name="android.permission.bluetooth_admin"/> Získání BluetoothAdapteru: BluetoothAdapter bluetooth = BluetoothAdapter.getDefaultAdapter();

5 BluetoothAdapter - vlastnosti setname(string name) Nastavení uživatelského jména adaptéru getstate() Současný stav adaptéru BluetoothAdapter.STATE_TURNING_ON BluetoothAdapter.STATE_ON BluetoothAdapter.STATE_TURNING_OFF BluetoothAdapter.STATE_OFF Enable()/Disble() Povolení/Zakázání Bluetooth Nutné oprávnění: android.permission.bluetooth_admin getbondeddevices() Vrací spárovaná zařízení

6 BluetoothAdapter - ukázka BluetoothAdapter bluetooth = BluetoothAdapter.getDefaultAdapter(); String toasttext; if (bluetooth.isenabled()) { String address = bluetooth.getaddress(); String name = bluetooth.getname(); toasttext = name + " : " + address; else { toasttext = "Bluetooth is not enabled"; String enablebt = BluetoothAdapter.ACTION_REQUEST_ENABLE; startactivityforresult(new Intent(enableBT), 0); Toast.makeText(v.getContext(), toasttext, Toast.LENGTH_SHORT).show(); Pokud je bluetooth vypnuté, nabídneme uživateli povolení (přes systém. sub-activitu) Pozn.: Vzhledem k tomu, že povolení BT je poměrně časově náročná operace, je lepší ji vykonávat asynchronně, nejlépe přes BroadcastReceiver.

7 Zjistitelnost bluetooth zařízení (Discoverability) Z bezpečnostních důvodů je zařízení defaultně nezjistitelné Definováno pomocí konstant BluetoothAdapteru BluetoothAdapter.SCAN_MODE_CONNECTABLE_DISCOVERABLE Zjistitelné jakýmkoli zařízením BluetoothAdapter.SCAN_MODE_CONNECTABLE Zjistitelné pouze zařízeními dříve spárovanými BluetoothAdapter.SCAN_MODE_NONE Nezjistitelné getscanmode() Vrátí aktuální scan mode

8 Zapnutí zjistitelnosti zařízení Pomocí Intentu zažádáme uživatele o povolení zjištění zařízení Defaultně nastaveno s timeoutem 120 sekund lze změnit BluetoothAdapter.EXTRA_DISCOVERABLE_DURATION String adiscoverable = BluetoothAdapter.ACTION_REQUEST_DISCOVERABLE; startactivityforresult(new Intent(aDiscoverable), DISCOVERY_REQUEST); @Override protected void onactivityresult(int requestcode, int resultcode, Intent data) { if (requestcode == DISCOVERY_REQUEST) { boolean isdiscoverable = resultcode > 0; int discoverableduration = resultcode;

9 Hledání jiných zařízení s bluetooth startdiscovery() Zahájí proces hledání jiných zařízení isdiscovering() Vrátí true pokud zařízení aktuálně vyhledává jiná zařízení canceldiscovery() Zruší vyhledávání jiných zařízení Broadcast intenty BluetoothAdapter.ACTION_DISCOVERY_STARTED BluetoothAdapter.ACTION_DISCOVERY_FINISHED Vhodné pro monitorování změn při procesu hledání jiných zařízení (přes BroadcastReceiver)

10 Nalezení jiného zařízení s bluetooth BluetoothAdapter bluetooth = BluetoothAdapter.getDefaultAdapter(); BroadcastReceiver discoveryresult = new BroadcastReceiver() { @Override public void onreceive(context context, Intent intent) { String remotedevicename = intent.getstringextra(bluetoothdevice.extra_name); BluetoothDevice remotedevice; remotedevice = intent.getparcelableextra(bluetoothdevice.extra_device); Toast.makeText(v.getContext(), "Discovered: " + remotedevicename, Toast.LENGTH_SHORT).show(); ; registerreceiver(discoveryresult, new IntentFilter(BluetoothDevice.ACTION_FOUND)); if (!bluetooth.isdiscovering()) bluetooth.startdiscovery();

11 Komunikace přes bluetooth Funguje nad protokolem RFCOMM Otevření socketu mezi dvěma spárovanými zařízeními Přes Bluetooth API nelze spárovat zařízení Je třeba k tomu vyzvat uživatele o to se sám postará systém při navazování spojení u nespárovaných zařízení Rozhraní socketů velmi podobné TCP Socket, ServerSocket BluetoothServerSocket Naslouchající socket Po navázání spojení vrací BluetoothSocket BluetoothSocket Klientský přípojený nebo připojující se socket UUID Jedinečný identifikátor aplikace (128 bit) Možno vygenerovat pomocí UUID.randomUUID() listenusingrfcommwithservicerecord (String name, UUID uuid) Vytvoření naslouchajícího zabezpečeného RFCOMM socketu

12 Jednoduchý bluetooth server private class AcceptThread extends Thread { private final BluetoothServerSocket mmserversocket; public AcceptThread() { BluetoothServerSocket tmp = null; try { tmp = mbluetoothadapter.listenusingrfcommwithservicerecord(name, MY_UUID); catch (IOException e) { mmserversocket = tmp; public void run() { BluetoothSocket socket = null; Blokující metoda while (true) { try { socket = mmserversocket.accept(); catch (IOException e) { break; if (socket!= null) { Něco provedeme se získaným manageconnectedsocket(socket); mmserversocket.close(); socketem break; public void cancel() { try { mmserversocket.close(); catch (IOException e) {

13 Jednoduchý bluetooth klient private class ConnectThread extends Thread { private final BluetoothSocket mmsocket; private final BluetoothDevice mmdevice; public ConnectThread(BluetoothDevice device) { BluetoothSocket tmp = null; mmdevice = device; try { tmp = device.createrfcommsockettoservicerecord(my_uuid); catch (IOException e) { mmsocket = tmp; Zrušíme zjišťování jiných zařízení public void run() { mbluetoothadapter.canceldiscovery(); Blokující metoda (pokud proběhne try { mmsocket.connect(); bez vyjímky, spojení je navázané) catch (IOException connectexception) { try { mmsocket.close(); catch (IOException closeexception) { return; manageconnectedsocket(mmsocket); public void cancel() { try { mmsocket.close(); catch (IOException e) {

14 Přenos dat pomocí BluetoothSocket private class ConnectedThread extends Thread { private final BluetoothSocket mmsocket; private final InputStream mminstream; private final OutputStream mmoutstream; public ConnectedThread(BluetoothSocket socket) { mmsocket = socket; InputStream tmpin = null; OutputStream tmpout = null; try { tmpin = socket.getinputstream(); tmpout = socket.getoutputstream(); catch (IOException e) { public void write(byte[] bytes) { mminstream = tmpin; try { mmoutstream.write(bytes); mmoutstream = tmpout; catch (IOException e) { public void run() { public void cancel() { byte[] buffer = new byte[1024]; try { mmsocket.close(); int bytes; catch (IOException e) { while (true) { try { bytes = mminstream.read(buffer); mhandler.obtainmessage(message_read, bytes, -1, buffer).sendtotarget(); catch (IOException e) { break;

15 Správa síťových připojení Internet se stává jednou z nejdůležitějších funkcí mobilního telefonu Android prakticky bez internetového připojení nemá smysl Technologie Wifi, GPRS, 3G, 4G ConnectivityManager Služba Monitoruje stavy připojení Vysílá broadcast intenty Nastavuje preferovaná síťová připojení Zprostředkovává API pro dotazovaní na stavy připojení Oprávnění: <uses-permission android:name="android.permission.access_network_state"/> <uses-permission android:name="android.permission.change_network_state"/>

16 ConnectivityManager NetworkInfo Status připojení Typ připojení Detailní stav připojení getactivenetworkinfo() Informace o aktuálním připojení getnetworkinfo(int networktype) Informace o konkrétním typu připojení getbackgrounddatasetting() Vrátí zda jsou povolena data na pozadí ConnectivityManager.ACTION_BACKGROUND_DATA_SETTING_ CHANGED Broadcast intent vysílaný při změně nastavení,,dat na pozadí

17 Monitorování síťového připojení ConnectivityManager.CONNECTIVITY_ACTION Broadcast intent vysílaný při změně síťového připojení Intent extras ConnectivityManager.EXTRA_EXTRA_INFO Dodatečné informace o stavu připojení ConnectivityManager.EXTRA_IS_FAILOVER ConnectivityManager.EXTRA_NETWORK_INFO NetworkInfo připojené sítě ConnectivityManager.EXTRA_NO_CONNECTIVITY Boolean hodnota nedostupnosti připojení ConnectivityManager.EXTRA_OTHER_NETWORK_INFO NetworkInfo případné jiné sítě, ke které by se mohlo jít připojit ConnectivityManager.EXTRA_REASON Informace o případném selhání pokusu o připojení

18 ConnectivityManager - příklad ConnectivityManager connectivitymanager; NetworkInfo wifiinfo, mobileinfo; TextView text; @Override public void oncreate(bundle savedinstancestate) { super.oncreate(savedinstancestate); setcontentview(r.layout.main); text = (TextView) findviewbyid(r.id.textstatus); connectivitymanager = (ConnectivityManager) getsystemservice(context.connectivity_service); wifiinfo = connectivitymanager.getnetworkinfo(connectivitymanager.type_wifi); mobileinfo = connectivitymanager.getnetworkinfo(connectivitymanager.type_mobile); text.append(wifiinfo.tostring() + "\n\n"); text.append(mobileinfo.tostring());

19 Wireless LAN Spravováno pomocí WifiManager Konfigurace a správa wifi připojení Hledání přístupových bodů Monitorování změn wifi připojení Kompletní kontrola nad konfigurací každé Wifi sítě Stavy wifi sítě WifiManager.WIFI_STATE_DISABLED WifiManager.WIFI_STATE_DISABLING WifiManager.WIFI_STATE_ENABLED WifiManager.WIFI_STATE_ENABLING WifiManager.WIFI_STATE_UNKNOWN Oprávnění: <uses-permission android:name="android.permission.access_wifi_state" /> <uses-permission android:name="android.permission.change_wifi_state" />

20 WifiManager broadcast intenty WifiManager.WIFI_STATE_CHANGED_ACTION Vysláno po změně stavu hardwaru zapnutí, zapínání, vypnutí, vypínání, neznámý WifiManager.SUPPLICANT_CONNECTION_CHANGE_ACTION Vysláno při změně stavu připojení aktuálního přístupového bodu Při navázání a zrušení spojení WifiManager.NETWORK_STATE_CHANGED_ACTION Vysláno při změně stavu připojení Extras WifiManager.EXTRA_NETWORK_INFO detaily o stavu připojení v NetworkInfo WifiManager.EXTRA_BSSID BSSID připojeného přístupového bodu WifiManager.RSSI_CHANGED_ACTION Extra - WifiManager.EXTRA_NEW_RSSI Obsahuje aktuální sílu signálu

21 Skenování dostupných přístupových bodů a jejich výpis do EditTextu final WifiManager wifi = (WifiManager)getSystemService(Context.WIFI_SERVICE); BroadcastReceiver receiver = new BroadcastReceiver() { @Override public void onreceive(context context, Intent intent) { EditText edit = (EditText) findviewbyid(r.id.edittext1); edit.settext(null); String newline = System.getProperty("line.separator"); List<ScanResult> results = wifi.getscanresults(); for (ScanResult result : results) { edit.append(result.tostring() + newline); unregisterreceiver(this); ; registerreceiver(receiver, new IntentFilter( WifiManager.SCAN_RESULTS_AVAILABLE_ACTION)); wifi.startscan();

22 Rozpoznání hlasového vstupu (Speech Input) Umožňuje diktovat text Je potřeba mít na nainstalovanou aplikaci, která je zaregistrovaná na RecognizerIntent Na většině zařízení je předinstalovaný Voice Search od Googlu (lze stáhnout i z Marketu) Voice Search se komunikuje se servery Googlu, kde probíhá rozpoznání hlasu Zařízení musí být připojeno k internetu Umí i češtinu

23 Rozpoznání hlasového vstupu Implementace je pomocí startactivityforresult 2 módy LANGUAGE_MODEL_FREE_FORM nastavíme, pokud se jedná o volný text (např. diktování SMS) LANGUAGE_MODEL_WEB_SEARCH použijeme pro krátké termíny (hledání na webu) Intent intent = new Intent(RecognizerIntent.ACTION_RECOGNIZE_SPEECH); //Nastaveni, zda se jedna o hledani (LANGUAGE_MODEL_WEB_SEARCH) nebo volny text intent.putextra(recognizerintent.extra_language_model, RecognizerIntent.LANGUAGE_MODEL_FREE_FORM); //Text, ktery se zobrazi pri diktovani intent.putextra(recognizerintent.extra_prompt, "Speech Input Test"); startactivityforresult(intent, VOICE_RECOGNITION);

24 Rozpoznání hlasového vstupu Speech Input aplikace vrátí List s výsledky Uživateli z nich můžeme nechat vybrat a nebo použijeme 1. v pořadí @Override protected void onactivityresult(int requestcode, int resultcode, Intent data) { if (requestcode == VOICE_RECOGNITION && resultcode == RESULT_OK) { // Ziskani vysledku z Extra pole Intentu ArrayList<String> matches = data.getstringarraylistextra( RecognizerIntent.EXTRA_RESULTS);... super.onactivityresult(requestcode, resultcode, data);

Přehrávač médií (MediaPlayer) Umožňuje přehrávání většiny běžných multimediálních formátů MediaPlayer přehraje soubory z těchto míst: Složka res/raw/ ve vaší aplikaci Filesystem zařízení Internet (streaming) 25

26 Přehrávač médií Raw resource v.apk MediaPlayer mediaplayer = MediaPlayer.create(context, R.raw.song); mediaplayer.start(); Filesystem, Internet Uri uri = Uri.fromFile(new File("/sdcard/Music/song.mp3")); Uri uri = Uri.parse("http://www.example.com/song.mp3"); mediaplayer = new MediaPlayer(); mediaplayer.setaudiostreamtype(audiomanager.stream_music); mediaplayer.setdatasource(context, uri); mediaplayer.prepare(); mediaplayer.start();

27 Přehrávač médií Pro video musíme mít SurfaceView, do kterého se bude vykreslovat, jinak se přehraje pouze audio <SurfaceView android:id="@+id/surfaceview1" android:layout_width="match_parent" android:layout_height="match_parent" /> SurfaceView sv= (SurfaceView) findviewbyid(r.id.surfaceview1); SurfaceHolder videoholder = sv.getholder(); videoholder.settype(surfaceholder.surface_type_push_buffers); Uri uri = Uri.fromFile(new File("/sdcard/Video/video.mp4")); mediaplayer.setaudiostreamtype(audiomanager.stream_music); mediaplayer.setdatasource(context, uri); mediaplayer.setdisplay(videoholder); mediaplayer.prepare(); mediaplayer.start();

28 Schránka Android API poskytuje framework pro kopírování a vkládání textu Systémová služba => referenci získáme pomocí (ClipboardManager) getsystemservice(clipboard_service); Vložení textu do schránky pak provedeme příkazem clipboardmanager.settext("text"); Získání textu ze schránky text = clipboardmanager.gettext().tostring(); String

A to nelepší nakonec! Funguje pouze na Gingerbread Rychle a opakovaně klikejte na,,verze systému Android 29