Připojení telefonu Android k počítači přes USB jako flash disk. Jak připojit flash disk k zařízením Android: problémy a řešení Program Android pro práci s flash diskem

Pokud potřebujete naléhavě přenést nějaké soubory z telefonu, tabletu nebo smartphonu Android na USB flash disk, abyste například vyčistili paměť vašeho zařízení nebo rychle něco přenesli na disk kamaráda, můžete to udělat díky nějaké další nákupy. Níže vám řekneme, jak můžete připojit flash disk k zařízení Android a co k tomu potřebujete.

Jak připojit flash disk k smartphonu nebo tabletu Android

Získáte tak možnost připojit USB flash disk k vašemu zařízení kdykoli a kdekoli, ale budete muset trochu nakupovat.

Pomocí OTG kabelu

Jediná věc, kterou musíte použít pro tuto metodu, je jít do obchodu nebo si objednat kabel OTG online. Jedná se o jakýsi adaptér z vašeho MicroUSB vstupu na zařízení do USB. Je to levné, kolem 150–300 rublů, takže tato možnost se zdá být nejpraktičtější. Ale pozor, před koupí drátu zkontrolujte, jaký vstup máte na telefonu/tabletu. Vyberte potřebný adaptér pro vaše zařízení, pokud jej nenajdete, budete si muset jednoduše koupit další adaptér z kabelu OTG k vašemu gadgetu.

Typy MicroUSB a MiniUSB:

Prostřednictvím aplikací

Po zakoupení kompletní sady kabelů jednoduše připojte všechny komponenty a flash disk bude automaticky detekován na vašem zařízení. Telefon však nemusí mít vestavěnou podporu pro kabel OTG (tuto funkci má většina moderních mobilních zařízení), pak jsou dvě možnosti:



Pro práci s Nexus Media Explorer stačí spustit aplikaci, když je flash disk vložen do OTG kabelu a je vložen do telefonu. StickMount bude muset být trochu nakonfigurován:

Nyní, když váš tablet nebo telefon identifikoval flash disk, můžete začít procházet a přesouvat vše z místa na místo tím, že přejdete do průzkumníka nainstalovaného v telefonu. Pokud takový program nemáte, stáhněte si ES File Explorer (ES Explorer) z Play Market (https://play.google.com/store/apps/details?id=com.estrongs.android.pop) popř. jakékoli jiné podobné z hlediska funkčnosti aplikace.

Jediný způsob, jak připojit flash disk k vašemu Android tabletu nebo telefonu, je použít OTG kabel, který poslouží jako adaptér z MicroUSB vstupu do konektoru disku. Pokud zařízení jednotku flash nevidí, použijte některý z výše navržených programů. Po úspěšné detekci přejděte do Průzkumníka a proveďte všechny operace zahrnující přenos a úpravu souborů.

Android umí skvěle pracovat s USB flash disky, některá zařízení mají dokonce plnohodnotný USB port. Ale ne každý má takové štěstí. Většina zařízení je vybavena microUSB konektorem. Co dělat, když potřebujete připojit flash disk ke smartphonu nebo tabletu vybavenému pouze microUSB portem?

Android má technologii USB On - To - Go (volně přeloženo: připojte a použijte). Jeho podstatou je, že zařízení je schopno napájet externí média připojená přes microUSB. Díky tomu má uživatel možnost pracovat s flash disky přímo ze svého tabletu nebo chytrého telefonu.

Tototechnika Všechna zařízení s Androidem 3.1 a vyšším ji určitě mají.. Pokud jde o zbytek, musíte zkontrolovat. Použijte k tomu program z Google Play Market.

Kontrola zařízení pomocí nástroje USB OTG Checker

Chcete-li zkontrolovat OTG na vašem zařízení, jednoduše spusťte program USB OTG Checker. Ta zařízení otestuje a ukáže vám výsledek.

Připojení OTG kabelu

Vaše zařízení je tedy dostatečně moderní, aby tuto jednoduchou technologii podporovalo. Nyní potřebujete adaptér USB na microUSB. Tento kabel se také nazývá kabel OTG.

Vypadá jako každý běžný adaptér: na jedné straně je plochý konektor pro microUSB konektor, na druhé je port USB krytý plastem.

Připojte jeden konec OTG kabelu ke smartphonu nebo tabletu a do druhého vložte flash kartu. Pokud je vše v pořádku, na obrazovce zařízení se zobrazí odpovídající zpráva. Budete vyzváni k otevření správce souborů a zobrazení dat z jednotky USB.

StickMount: pokud zařízení nevidí flash disk přes adaptér

Bohužel to není vždy tak jednoduché. Na některých zařízeních nemusí být USB disk rozpoznán, i když je přítomen OTG. Pokud vyloučíme možnost poškození jednotky flash (zkontrolujte ji připojením k počítači), možná váš smartphone / tablet automaticky nerozpozná externí médium. V tomto případě pomůže program. Můžete si jej stáhnout z Google Play Market.

  1. Stáhněte a nainstalujte program.
  2. Zkuste znovu vložit flash disk.
  3. Android vás nyní vyzve ke spuštění StickMount. Souhlasit. Jednotka Flash bude detekována a budete moci zobrazit soubory nainstalované na ní.

Upozorňujeme, že StickMount vyžaduje přístup root.

Jak získat přístup root na zařízení


Jak připojit USB flash disk k Androidu pomocí adaptéru - video

Jak zobrazit data z flash disku

Abyste mohli s externím diskem pohodlně pracovat, budete potřebovat dobré správce souborů. Pokud máte přístup root, můžete si vybrat z různých možností. Ale pokud jste vlastníkem zařízení Nexus, pak jsou na Play Marketu minimálně dvě aplikace, které vám umožní obejít se bez rootu.

aplikace Popis
Nexus Media Importer Kopírování mediálních dat z externích médií. Vlastnosti aplikace:
  • Import/export fotografií, videí a hudby
  • podpora NTFS
  • Pracujte bez práv roota
Správa souborů Nexus USB 2OTG. Zobrazení souborů na externích médiích pro zařízení Nexus. Vlastnosti aplikace:
  • Plná kontrola nad soubory (vytváření, mazání, úpravy)
  • Systém souborů podporuje systém souborů FAT32
  • Pracujte bez práv roota

Ty nejsou jediné, ale možná jedny z nejlepších. Bohužel, oba jsou placeni. Obecně mohou fungovat na jiných zařízeních, musíte zkontrolovat zde. To lze provést pomocí programu Nexus Photo Viewer.

Chcete-li tedy připojit flash disk k zařízení s operačním systémem Android, budete potřebovat adaptér USB na microUSB a několik programů. K plné práci s vyměnitelnými médii navíc potřebujete dobré správce souborů, které lze nainstalovat pouze do chytrého telefonu nebo tabletu s přístupem root.

Smartphony a tablety aktivně nahrazují nejen osobní počítače, ale dokonce i notebooky z našeho každodenního života. Některé funkce, například psaní poměrně velkého kusu textu, však vzhledem k malé velikosti klávesnice mobilního zařízení vyžadují určité úsilí a často potíže.

V tomto ohledu vyvstává otázka: je možné přímo připojit požadovaný gadget k vašemu zařízení Android? Ukazuje se, že je to možné! Ne každý uživatel ví, že k Android zařízení je možné připojit klávesnici, USB herní periferie, externí modem atd.

Jedním z nástrojů pro výměnu informací mezi chytrým telefonem a PC je flash disk (USB flash disk), který se připojuje přes USB rozhraní k libovolnému čtecímu zařízení.

Většina moderních zařízení s OS Android má standardní micro-USB konektor, který slouží jako komunikační port. Chcete-li vidět zařízení připojená přes port, smartphone musí podporovat technologii USB On-The-Go (zkr. USB OTG). Tato funkce je implementována ve verzích operačního systému Android, které nejsou nižší než 3.1.

Pro připojení flash disku budete potřebovat USB OTG kabel s microUSB konektorem na jedné straně a USB konektorem na druhé:

Pokud byl výrobce vašeho zařízení skoupý a nepřidal ho k telefonu, musíte ho získat tím, že utratíte malou částku v jakémkoli specializovaném obchodě. Pokud vaše zařízení USB konektor nemá, budete si muset dokoupit adaptér s USB na jednom konci a konektorem odpovídajícím vašemu zařízení na druhém, ke kterému se následně připojí USB OTG kabel.

Jak otevřít flash disk v systému Android

Chcete-li otevřít flash disk a zobrazit jeho obsah, potřebujete správce souborů. Mnoho moderních modelů chytrých telefonů je tím zpočátku vybaveno, a pokud máte kabel USB OTG, k vyřešení problému zbývá pouze připojit disk. Pokud není předinstalovaný správce souborů, tak si budete muset stáhnout nějakého třetího, naštěstí podobného (přímo cesta k souborům: /sdcard/usbStorage).

Tablet Android nevidí flash disk - důvody

Ne všechna zařízení Android však mohou fungovat zjednodušeným způsobem. Často se spojení vytvoří, ale neděje se vůbec nic.

První důvod. Tato situace může nastat kvůli tomu, že konkrétní zařízení neumí automaticky připojit externí disk, takže bude potřebovat pomoc, což je možné instalací programu, který to umí. Snad nejoblíbenější bezplatná v tomto segmentu funguje nejen s flash disky, ale i s dalším vybavením včetně digitálních fotoaparátů.

Je pravda, že jeho instalace vyžaduje root přístup, a pokud jej již máte, můžete připojit USB flash disk přes USB OTG kabel. Ve vyskakovacím okně musíte souhlasit se spuštěním StickMount a program automaticky rozpozná disk a podle toho jej připojí. Najdete ho na cestě /sdcard/usbStorage/sda1. Chcete-li jednotku flash bezpečně odebrat, přejděte znovu do programu a vyberte příkaz „Unmount“.

Další dobrou aplikací, která stojí za zmínku, je USB OTG Helper (vyžadována jsou také práva root). Princip fungování je podobný výše popsanému.

Druhý důvod Důvod, proč vaše zařízení nemusí flash disk vidět, je ten, že některé systémy souborů, jako je NTFS, ve výchozím nastavení prostě nečte.

V tomto případě pomocí počítače musíte flash disk přeformátovat na exFAT nebo FAT32.

Ale co když v tuto chvíli není žádný počítač? Pak můžete použít aplikaci Paragon NTFS & HFS+, která podporuje formát NTFS a umožňuje manipulovat s digitálními soubory, které mají podobný souborový systém (budete ho potřebovat k instalaci).

Snažili jsme se vám co nejpodrobněji říci, jak připojit flash disk k zařízení Android a importovat soubory do vašeho zařízení a zpět na externí flash disk. Pokud i po přečtení článku máte nějaké dotazy, kontaktujte nás a my dáme všechna písmena i. Hodně štěstí!


Obr. 1 Ilustrace fungování zařízení Android v režimech USB Host a Accessory (obrázek z webu http://developer.android.com)

Pamatujte, že použití USB není jediný způsob komunikace se stejným domácím zařízením. Android také umožňuje používat NFC, Wi-Fi P2P, SIP a také standardní síťové připojení. Vývojář má tedy ve svém arzenálu dostatek příležitostí k realizaci svých nejdivočejších nápadů.

Další běžnou možností pro komunikaci s různými zařízeními je stále použití USB-COM adaptéru. Na internetu je materiál o použití adaptéru USB-COM v systému Android - viz například. Popularita tohoto spojení je dána přítomností velkého množství zařízení již vyvinutých pomocí různých mikrokontrolérů, s nimiž komunikace probíhá pomocí COM portu (sériový port), který byl před 10 lety téměř standardním způsobem přenosu dat z počítač k podomácku vyrobenému kusu hardwaru.

Ve srovnání s COM portem může použití USB výrazně zvýšit rychlost přenosu dat a učinit tento proces uživatelsky příjemnějším. Přenosová rychlost, která je i v případě nízkorychlostních zařízení (klávesnice, myši, joysticky) 10-1500 Kbps, jednoduchost a nízká cena kabeláže a připojení, vlastní identifikace zařízení s automatickou konfigurací, skrytí detailů elektrické připojení od koncového uživatele (plus možnost odpojení kabelu bez vypnutí zařízení), kontrola chyb a jejich obnova na úrovni protokolu – to jsou nesporné výhody této technologie (viz str. 12).

Obecně, když mluvíme o použití USB pro přenos dat, bylo by užitečné zmínit knihu P. Agurova „USB Interface“. Přestože je na internetu často kritizována a naposledy vyšla v roce 2006, nejednou pomohla najít správné řešení při hledání informací o různých aspektech aplikace této technologie. Kniha pokrývá problematiku od výběru mikroobvodu a návrhu obvodu pro regulátor až po napsání programu mikrokontroléru a příklady programování přenosu dat přes USB protokol z počítače. Nelze neuvést „primární zdroj“ dat k této problematice - web neziskové organizace USB IF (USB Implementers Forum), která vyvíjí specifikace pro toto rozhraní -, ačkoli tento materiál je v angličtině. Právě tam však naleznete komplexní informace o zařízení s rozhraním USB. Existuje dobrý překlad částí specifikace - . Zájemci o softwarová řešení ze strany mikrokontrolérů mohou vidět i odkaz.

Tento článek je určen především těm, kteří mají jakékoli elektronické zařízení (vyvinuté nezávisle nebo někým jiným), jehož protokol pro výměnu dat je dobře znám (např. již existuje program, který s tímto zařízením pracuje ve Windows/Linux) a rád bych chtěl mít program, který s tím pracuje v Androidu.

Něco málo o třídách USB zařízení

Je třeba poznamenat, že vývoj softwaru pro komunikaci s konkrétním zařízením je velmi závislý na jeho implementaci na úrovni mikrokontroléru. Z pochopitelných důvodů není možné uvést příklady komunikačních programů pro všechny typy USB zařízení v jednom článku (prvotní informace o programování různých typů zařízení naleznete v ). Omezíme se však na představení kódu, který implementuje vyhledávání zařízení a přístup k jeho kontrolním bodům pro výměnu informací. Budeme také analyzovat odesílání dat na příkladu jednoho z typů USB zařízení, konkrétně zařízení třídy HID (human interface device). Do této třídy patří „pomalá“ zařízení jako klávesnice, myš, joystick a existuje spousta příkladů její implementace pomocí různých mikrokontrolérů v síti (jsou např. in).

Proč je třída HID mezi výrobci různých podomácku vyrobených zařízení tak oblíbená? Abychom citovali Wikipedii: „Kromě podrobných specifikací klasických vstupních zařízení (jako jsou klávesnice a myši) definuje standard HID speciální třídu zařízení bez podrobných specifikací. Tato třída se nazývá USB HID Consumer Control a je v podstatě neregulovaným komunikačním kanálem se zařízením. V tomto případě zařízení používá stejné standardní ovladače pro operační systém jako myš a klávesnice. Je tak možné vytvořit USB zařízení, které nevyžaduje vytváření a instalaci speciálních ovladačů ve většině běžných počítačových operačních systémů.“ Zbývá jen dodat, že tato specifikace funguje i v OS Android (firmware CyanogenMod nevyjímaje).

Jednou z možností výměny dat s HID zařízením je přerušovaný přenos, který se používá, když je potřeba přenést malé datové pakety (maximální velikost paketu závisí na přenosové rychlosti a pohybuje se od 64 do 1024 bajtů) po stanoveném časovém intervalu. . Balíček pro přenos se nazývá report (anglicky - report, viz str. 71, 95). Tato délka zprávy je obvykle dostačující pro výměnu informací s podomácku vyrobeným zařízením, například 64 bajtů informací v jednom paketu je pro řadič poměrně hodně, protože 1 bit informace stačí k přenosu stavů LED; nebo jednoduchý senzor.

Požadované nástroje

Budeme tedy potřebovat tablet nebo telefon s verzí Androidu ne nižší než 3.1. Zde je třeba poznamenat, že výše uvedené rozhraní USB Host API není plně implementováno na všech mobilních zařízeních (je to zmíněno i na webu developer.android.com, viz odkaz). U některých tabletů/telefonů se USB konektor používá pouze pro nabíjení a komunikaci s osobním počítačem. Ještě jednou čtenáře odkážu na seznam mobilních zařízení vhodných či nevhodných pro naše experimenty (viz).

Dále budete potřebovat nějaké USB zařízení (pro první pokusy vám bude stačit běžný USB flash disk), OTG adaptér (On-The-Go - viz obr. 2) a/nebo USB kabel pro komunikaci s přístroj. Wikipedie o OTG říká: „Při připojení přes USB OTG je hodnost zařízení (master nebo slave) určena přítomností nebo nepřítomností propojky mezi piny 4 a 5 v zástrčce propojovacího kabelu. V kabelu USB OTG je taková propojka instalována pouze v jednom ze dvou konektorů (viz). V souladu s tím potřebujeme takový jumper na straně mobilního zařízení.


Obr.2 Rozdíly v zapojení běžného USB kabelu a OTG kabelu (obrázek z http://tech.firstpost.com)

Takový OTG kabel si můžete pro své zařízení připájet sami. Chcete-li to provést, musíte si v obchodě s rádiem koupit vhodný konektor a autor například použil starý kabel z přenosného pevného disku:

Dobrým pomocníkem při vaší práci bude také program USB Device Info nainstalovaný z úložiště Google Play Market. Program dokáže detekovat zařízení připojená k USB konektoru tabletu/telefonu pomocí Java API i linuxového jádra. To znamená, že pokud vaše zařízení není detekováno pomocí Java USB Host API v USB Device Info, pak s největší pravděpodobností bude marné používat jakýkoli (včetně vašeho vlastního) Android program napsaný pomocí Java pro toto mobilní zařízení a USB Host API.

Někdy je také velmi užitečný výstup informací příkazem lsusb operačního systému Linux. Pomocí přepínačů -v a -d zobrazí lsusb vše nebo téměř vše o zařízení USB, které vývojář softwaru potřebuje pro zařízení této třídy (viz obr. 3).


Obr.3 Příklad výstupu příkazů lsusb a lsusb -v -d

Dále potřebujete počítač s nainstalovaným Android SDK a integrovaným vývojovým prostředím (IDE) Eclipse s pluginem ADT (i když si vystačíte pouze s SDK). Můžete se podívat, jak vytvořit a nainstalovat aplikaci pro Android, například na internetu nebo na internetu.

A samozřejmě potřebujete alespoň touhu dosáhnout výsledků, bez ní to nejde! Podotýkám, že autorovi trvalo týdny usilovného hledání informací, než objasnil některé technické problémy týkající se použití USB v Androidu.

Java třídy pro práci s USB v Android API

Takže, jak říkají na webových stránkách vývojářů USB Host API pro Android (viz) - „než začnete, je důležité pochopit, jaké třídy budete ve své práci používat.“ Tabulka 1 uvádí popis nejdůležitějších tříd pro práci s rozhraním USB Host API (pokus o překlad informací z http://developer.android.com).

Tabulka 1. Popis tříd pro práci s USB v Androidu

Jméno třídy Popis
USBManager Umožňuje provádět výčet a komunikovat s připojenými zařízeními USB.
Umožňuje detekovat připojené USB zařízení a vyměňovat si s ním data.
Zařízení USB Představuje připojené USB zařízení a obsahuje metody přístupu k jeho identifikačním informacím, rozhraním a koncovým bodům.
Představuje připojené USB zařízení a obsahuje metody pro přístup k jeho identitě, rozhraním a koncovým bodům.
Rozhraní USB Představuje rozhraní USB zařízení, které definuje sadu funkcí pro zařízení. Zařízení může mít jedno nebo více rozhraní, na kterých může komunikovat.
Představuje „rozhraní“ zařízení USB, které definuje sadu funkcí pro toto zařízení. Jedno zařízení může mít jedno nebo více rozhraní pro výměnu informací.
USBKoncový bod Představuje koncový bod rozhraní, což je komunikační kanál pro toto rozhraní. Rozhraní může mít jeden nebo více koncových bodů a obvykle má vstupní a výstupní koncové body pro obousměrnou komunikaci se zařízením.
Představuje „koncový bod“ rozhraní, což je komunikační kanál pro toto rozhraní. Rozhraní může mít jeden nebo více koncových bodů a obvykle má koncové body pro příjem informací a pro jejich přenos.
USBDeviceConnection Představuje připojení k zařízení, které přenáší data na koncových bodech. Tato třída umožňuje posílat data tam a zpět synchronně nebo asynchronně.
Představuje „připojení“ k danému zařízení. Vyžadováno k přenosu dat do koncového bodu. Tato třída umožňuje přijímat nebo přenášet data synchronně nebo asynchronně.
USBRequest Představuje asynchronní požadavek na komunikaci se zařízením prostřednictvím UsbDeviceConnection.
Představuje asynchronní požadavek na komunikaci se zařízením přes UsbDeviceConnection.
Konstanty USB Definuje konstanty USB, které odpovídají definicím v linux/usb/ch9.h jádra Linuxu.
Definuje konstanty, které odpovídají definicím v linux/usb/ch9.h jádra Linuxu.

Téměř ve všech případech použití USB Host API programátor ve své práci používá tyto třídy. Algoritmus jejich použití vypadá asi takto: definujeme zařízení (cílem je programový přístup do třídy UsbDevice) připojená k hostiteli (mobilnímu zařízení) pomocí UsbManager. Po získání softwarového přístupu k zařízení je nutné určit vhodné rozhraní UsbInterface a UsbEndpoint pro komunikaci se zařízením. Jakmile budete mít koncový bod k dispozici, otevřete UsbDeviceConnection a komunikujte se zařízením USB. Pokud koncový bod pracuje v režimu asynchronního přenosu, používáme třídu UsbRequest.

Zkusme na to všechno přijít vytvořením jednoduché aplikace, která pomocí tohoto API rozpozná zařízení připojené k hostiteli se systémem Android OS a zobrazí o něm nějaké informace na obrazovce telefonu nebo tabletu.

Vytvořte projekt

V Eclipse se projekt vytváří pomocí položek nabídky Soubor->Nový->Projekt aplikace Android. Všimněte si také, že níže uvedený kód je vypůjčen z ukázkových aplikací dodávaných s Android SDK (složka android sdk sample/android-N(API Level)/USB) mluvíme o programu pro ovládání hraček Missile Launcher USB (viz obr. 4 ) Ukázka aplikace se stahují přes Android SDK Manager (zaškrtněte políčko - Samples for SDK). V níže uvedených seznamech jsou příklady kódu opatřeny komentáři, které vysvětlují, co se děje.


Obr.4 Zábavná hračka "Raketomet"

Při vytváření projektu nezapomeňte zaškrtnout požadovanou API Level ve volbě Minimum Requared SDK (API Level 12, odpovídající Androidu verze 3.1 /Honeycomb/, nebo vyšší). Projekt bude mít velmi jednoduché uživatelské rozhraní – hlavní okno (Activity) a TextView pro zobrazování informací. Podobný projekt je podrobně diskutován v.

V automaticky vytvořené třídě pro Aktivitu našeho projektu je nutné definovat následující instance tříd pro práci s USB:

soukromý TextView lgView;
soukromý UsbManager mUsbManager;
soukromé mDevice UsbDevice;
soukromé připojení UsbDeviceConnection mConnection;
private UsbEndpoint mEndpointIntr;

LgView = (TextView) findViewById(R.id .logTextView ) ;

a získejte přístup ke třídě UsbManager

MUsbManager = (UsbManager) getSystemService(Context .USB_SERVICE ) ;

Vytvořme také obsluhu události onResume(). Dosáhněme cíle – aby se při aktivaci okna naší aplikace aktualizovaly informace o připojených zařízeních (viz Výpis 1).

Výpis 1. Obsluha události OnResume().

public void onResume() (
super.onResume();

//naplňte kontejner seznamem zařízení
HashMap< String , UsbDevice>deviceList = mUsbManager.getDeviceList();
Iterátor< UsbDevice>deviceIterator = deviceList.values().iterator();

lgView.setText("Počet zařízení:" + deviceList.size());

while (deviceIterator.hasNext()) (
UsbDevice device = (UsbDevice) deviceIterator.next () ;

//příklad určení ProductID zařízení
\n"+ "Device ProductID: " + device.getProductId());
}
//definuje záměr popsaný ve filtru
// záměr AndroidManifest.xml
Záměr záměr = getIntent() ;
lgView.setText(lgView.getText()+" \n"+ "záměr: " + záměr);
String action = intent.getAction();

//pokud je zařízení připojeno, předejte odkaz
//na funkci setDevice().
UsbDevice device = (UsbDevice) intent.getParcelableExtra(UsbManager.EXTRA_DEVICE) ;
if (UsbManager.ACTION_USB_DEVICE_ATTACHED .rovná se (akce) ) (
setDevice(zařízení) ;
lgView.setText(lgView.getText()+" \n" + "UsbManager.ACTION_USB_DEVICE_ATTACHED.equals(action) je PRAVDA") ;
) else if (UsbManager.ACTION_USB_DEVICE_DETACHED .rovná se (akce) ) (
if (mDevice != null && mDevice.equals (device) ) (
setDevice(null) ;
lgView.setText(lgView.getText()+" \n" + "UsbManager.ACTION_USB_DEVICE_DETACHED.equals(action) je PRAVDA") ;
}
}

Dále vytvoříme funkci setDevice() pro Aktivitu, která je nezbytná pro práci s naším zařízením (viz Výpis 2). V obslužné rutině onResume() a ve funkci setDevice() jsme přesně dodrželi algoritmus pro použití rozhraní USB Host API popsaný v předchozí části.

Výpis 2. funkce setDevice().

private void setDevice(zařízení UsbDevice) (
lgView.setText(lgView.getText()+" \n"+ "setDevice" + zařízení);

//určení dostupných rozhraní zařízení
if (device.getInterfaceCount() != 1) (

LgView.setText (lgView.getText() + " \n"+ "nepodařilo se najít rozhraní" );
vrátit se ;
}
UsbInterface intf = device.getInterface(0);

//definování koncových bodů zařízení
if (intf.getEndpointCount() == 0 ) (

LgView.setText (lgView.getText() + " \n"+ "nelze najít koncový bod" );
vrátit se ;
) jinak (
lgView.setText(lgView.getText()+" \n"+ "Počet koncových bodů: " + intf.getEndpointCount () );
}

UsbEndpoint epIN = null ;
UsbEndpoint epOUT = null ;

//hledejte koncové body k přenosu přes přerušení
for (int i = 0; i< intf.getEndpointCount () ; i++ ) {
if (intf.getEndpoint(i).getType() == UsbConstants.USB_ENDPOINT_XFER_INT) (
if (intf.getEndpoint(i).getDirection() == UsbConstants.USB_DIR_IN) (
epIN = intf.getEndpoint(i) ;
lgView.setText(lgView.getText()+" \n"+ "IN endpoint: " + intf.getEndpoint (i) );
}
jiný(
epOUT = intf.getEndpoint(i) ;
lgView.setText(lgView.getText()+" \n"+ "OUT koncový bod: " + intf.getEndpoint (i) ) ;
}
) else ( lgView.setText ( lgView.getText() + " \n" + "žádné koncové body pro INTERRUPT_TRANSFER") ; }
}

MDevice = zařízení;
mEndpointIntr = epOUT;

//otevře zařízení pro přenos dat
if (zařízení != null ) (
Připojení UsbDeviceConnection = mUsbManager.openDevice (zařízení) ;
if (connection != null && connection.claimInterface (intf, true ) ) (

LgView.setText (lgView.getText() + " \n"+ "otevřít zařízení ÚSPĚCH!" );
mConnection = připojení;

) jinak (

LgView.setText (lgView.getText() + " \n"+ "Otevřít zařízení FAIL!" );
mConnection = null ;
}
}
}
}

Kromě výše uvedeného kódu, který, jak pozorný čtenář pravděpodobně tuší, otevírá zařízení pro příjem a přenos dat, nezbývá než použít protokol výměny dat, který by měl být, opakuji, vývojáři dobře znám. Uvedeme pouze, jak jsme slíbili, kód, který odešle určitý datový paket zprávy do zařízení HID pomocí přenosu přerušení, třídu UsbRequest a odpovídající koncový bod - viz Výpis 3.

Výpis 3. Příklad kódu pro odesílání dat do zařízení

//určení velikosti vyrovnávací paměti k odeslání
//na základě maximální velikosti paketu
int bufferDataLength = mEndpointIntr.getMaxPacketSize () ;

lgView.setText(lgView.getText()+" \n"+ mEndpointIntr.getMaxPacketSize());

ByteBuffer buffer = ByteBuffer.allocate (bufferDataLength + 1 ) ;

UsbRequest request = new UsbRequest() ;

buffer.put(zprava);

request.initialize(mConnection, mEndpointIntr) ;

request.queue(buffer, bufferDataLength) ;

if (request.equals(mConnection.requestWait()))

//odeslání proběhlo úspěšně
//lgView.setText(lgView.getText() + "\n" + "odesílání CLEAR!!!");

chytit (exception ex)

//Je něco špatně...
//lgView.setText(lgView.getText() + "\n" + "odesílání není jasné...");

Filtrování zařízení v AndroidManifest.xml

Přestože naše aplikace nepotřebuje vyhledávat konkrétní zařízení se známým VID (Vendor-ID) a PID (Product-ID), inženýři společnosti Google neposkytují příklady aplikací bez sekce intent-filter v souboru manifestu a autorovi se nepodařilo zprovoznit program bez filtrování zařízení v AndroidManifest.xml.

Dovolte mi připomenout, že Vendor-ID a Product-ID jsou jedinečné identifikátory USB zařízení. To znamená, že pomocí filtrování můžete vytvořit aplikaci, která spolupracuje pouze s určitým zařízením nebo nějakou třídou zařízení. Vezměte prosím na vědomí, že výrobci zařízení se musí na těchto číslech dohodnout s organizací USB IF.

Aplikace, jejíž soubor manifestu je uveden ve výpisu 4 a jejíž soubor podmínek filtru je například ve výpisu 5, úspěšně rozpoznává USB flash disky připojené k mobilnímu zařízení, ale nerozpozná klávesnici a myš, které má autor. Tuto aplikaci spolu se zdrojovým kódem lze stáhnout z odkazu.

Výpis 4. Soubor AndroidManifest.xml


" > http://schemas.android.com/apk/res/android"
> package="ru.learn2prog.usbhostexample"
android:versionCode="1"
android:versionName="1.0" >


android:minSdkVersion="12"
android:targetSdkVersion="14" />


android:allowBackup="true"
android:icon="@drawable/ic_launcher"
android:label="@string/název_aplikace"
android:theme="@style/AppTheme" >

android:name = "ru.learn2prog.usbhostexample.MainActivity"
android:label="@string/název_aplikace" >
>

"android.intent.category.DEFAULT" />

"android.intent.category.LAUNCHER" />

>

>

>
"android.hardware.usb.action.USB_DEVICE_ATTACHED"
android:resource="@xml/device_filter" />
>
>

>

Výpis 5. Soubor filtru device_filter.xml (adresář /res/xml)

>

>

Operace pro sestavení a instalaci naší aplikace se neliší od běžných operací (viz příklady v,). Chtěl bych upozornit na akce intent filtru - když je zařízení připojeno k hostiteli, OS požádá uživatele, aby spustil naši aplikaci.

Literatura/Odkazy: 11.
12.
13. http://developer.android.com/guide/topics/connectivity/usb/host.html - přehled tříd potřebných pro práci s USB v Androidu
14. odkaz na zdroje aplikace

Navzdory podpoře smartphonu nebo tabletu Android pro SD karty až do 32 GB je někdy nutné připojit externí „úložiště“ - přenosné pevné disky a flash disky.

Podstata problému s jednotkami USB-Flash na zařízeních Android

Moderní flash disky mají kapacitu až 128 GB. Toto množství paměti není zbytečné, zvláště když majitel smartphonu nebo tabletu stahuje a distribuuje mnoho filmů, hudby, programů atd. najednou je potřeba další paměť. Podstata problému je následující.

  • Do každého gadgetu nelze nainstalovat více než jednu SD kartu – nejedná se o SIM karty, ve smartphonu nebo tabletu je pouze jeden slot pro SD kartu. Zařízení se dvěma microSD sloty jsou velkou otázkou. Neexistují ani paměťové karty s kapacitou terabajtu a více, to vše je otázkou budoucnosti.
  • Není vždy možné přenést váš obsah z vašeho zařízení do cloudu a zpět: mobilní internet není zcela neomezený a vyhledávání Wi-Fi po městě nebo „tethering“ na router s internetem od Rostelecom doma i v práci také není možnost.
  • Nepřetržitá výměna desítek gigabajtů provozu za den přes mobilní sítě a Wi-Fi, smartphone nebo tablet spotřebovává spoustu energie. K dobití gadgetu potřebujete zásuvku nebo výkonnou PowerBanku s baterií o kapacitě 10 ampérhodin a více. Obecně platí, že všechny své „napumpované“ věci musíte někde uložit a přitom zůstat mobilní a svobodně si vybrat.
  • K tomu je potřeba připojit další „flash disky“ přes microUSB. Ideální volbou pro ty, kteří často jezdí na služební cesty nebo cestují, je nosit v tašce tablet a několik 32–128 GB flash disků.

    Jak připojit flash disk k gadgetu Android přes OTG

    OTG je USB-microUSB adaptér, náhrada USB kabelu se zařízením Card Reader. Zabírá málo místa – ne více než standardní flash disk. V tomto případě musí být flash disk naformátován na FAT32 - ne vše jde hladce se souborovým systémem NTFS pro operační systém Android.

    Existuje složitější způsob: nainstalujte si speciální aplikaci pro Android, která umožní vašemu smartphonu nebo tabletu pracovat s médii NTFS. Mohou to být tedy exFAT/NTFS pro Total Commander, Paragon NTFS & HFS+ a jejich analogy.

  • Adaptér OTG musí mít USB konektor pro zástrčku flash disku. To je přesně to, co potřebujete. Většina moderních Android zařízení nemá miniUSB konektor, ale microUSB konektor. Najděte v obchodě adaptér OTG požadovaného standardu. OTG adaptér je dostupný jak jako pevné zařízení, tak i jako speciální microUSB kabel.

    Potřebujete OTG se zásuvkou, ne zástrčku pro USB disky

  • Po připojení flash disku spusťte na svém zařízení „Správce souborů“ – jeho obsah by se měl zobrazit na adrese „/sdcard/usbStorage“.

    Vyberte složku USBdisk

  • Pokud flash disk není čitelný, potřebujete speciální aplikace pro Android. Některé z nich vyžadují práva root.

    Jak získat přístup root

    Aplikace, které vám umožňují získat root přístup bez použití počítače: FramaRoot, Universal Androot, Visionary+, GingerBreak, z4root, BaiduRoot, Romaster SU, Towelroot, RootDashi, 360 Root atd.

    Aplikace, které „hackují“ Root přes PC: SuperOneClick, Unrevoked, GenoTools, vRoot, MTKDroidTools atd.

    Pamatujte, že získáním práv root ztratíte záruku dodavatele a riskujete poškození vašeho gadgetu.

    Dalším způsobem je změna licencovaného firmwaru Android na „vlastní“ s nepřipojeným přístupem root.

    Zobrazení obsahu flash disku na smartphonu nebo tabletu Android pomocí aplikací třetích stran

    aplikace USB Media Explorer

    Pokud si chcete zjednodušit proces přístupu k flash disku, použijte placenou aplikaci USB Media Explorer. Starý název programu je Nexus Media Importer; byl původně vyvinut pro zařízení Nexus, ale rychle rozšířil řadu podporovaných smartphonů a tabletů Android. Kořenová práva nejsou potřeba, program je placený.

    Pokud vám toto řešení nevyhovuje, budete muset pracovat trochu tvrději.

    Řešení založená na programu StickMount

    Aplikace StickMount je jednou z nejznámějších a vyžaduje práva roota. Funguje ve spojení s jakýmkoli správcem souborů Android, například ES Explorer. Obě aplikace jsou dostupné na Play Marketu.

  • Po instalaci otevřete StickMount, připojte flash disk a potvrďte požadavek na automatické spuštění StickMount při připojování flash disků.

    Potvrďte svůj požadavek

  • Druhým požadavkem bude aplikace StickMount dotazující se na oprávnění Root v systému Android. Potvrďte kliknutím na tlačítko Grant. Nezaškrtávejte políčko vedle možnosti „Zeptejte se mě znovu v budoucnu“.

    Potvrďte stisknutím klávesy Grant

  • V oznamovací liště (nahoře) se objeví upozornění, že obsah flash disku je umístěn na '/sdcard/usbStorage/' - nyní otevřete aplikaci ES Explorer.

    Zobrazení informací o zatížení flash disku

  • Flash disk umožňuje čtení/zápis.

    Všechny vaše soubory jsou nyní k dispozici

    Připojení USB flash disků k zařízením, která nemají miniUSB/microUSB

    Řada společností, které nejsou tak známé jako ZTE, Huawei, Sony a jejich další konkurenti, instaluje nestandardní konektory rozhraní. OTG adaptéry s miniUSB/microUSB absolutně nejsou vhodné pro gadgety s vysoce standardizovaným konektorem bez speciálního OTG adaptéru. Hledejte na Ebay nebo AliExpress adaptér OTG, který odpovídá standardu zásuvky rozhraní vašeho smartphonu nebo tabletu. Další kroky k získání softwarového přístupu k vašim flash diskům jsou stejné.

    Další způsoby připojení flash disku k chytrému telefonu nebo tabletu Android

    Existují následující metody:

  • Připojte k počítači tablet/smartphone a USB flash disk.
  • Připojte flash disk k smartphonu/tabletu prostřednictvím speciálního zařízení – CarsReader. Vhodné pro majitele SD/MiniSD karet, USB MemoryStick flash paměti.
  • Připojení paměťové karty microSD pomocí speciálního adaptéru s USB konektorem je podobné jako u běžného USB flash disku.
  • Video: Připojení dalších zařízení k chytrému telefonu a tabletu, včetně flash disků: problémy a řešení

    Připojením flash disků a dalších úložných zařízení k chytrému telefonu nebo tabletu se systémem Android si uvolníte ruce, pokud jde o organizaci ukládání dat, která nosíte s sebou. To se vám může velmi hodit na služebních cestách a cestování. Hodně štěstí!