Android fail #Over9000 - Media Transfer Protocol

Sokakat zavart már bizonyára egy időben, hogy Mass Storage esetén vagy csak a telefon, vagy csak a számítógép használja a disket. A kettő együtt nem lehetséges Mass Storage esetén, cserébe Mass Storage-on még partícionálhatjuk is a lemezt. Mivel ezt az idők többségében nem szeretnénk használni, csak a file transfer funkciót, lehetségessé válik egy olyan megoldás, hogy mindkét eszköz tudja olvasni a fájlrendszert, melyből legalább az egyik írni is tudja (ha ügyesek vagyunk mindkettő, lásd később). Mivel az alkalmazások fejlesztőinek a Mass Storage miatt le kell kezelniük, hogy az a memóriaterület nem mindig van ott, például ébresztő és jelző hangok esetén ez már önmagában probléma, de sok app a configját is az external diskre teszi, szükségessé válik az előbb lehetségesnek nyilvánított feature: ugyan maradjanak már meg azok a file-ok a telefon fálrendszerén miközben gépről írok rá.

Ezt a "mindkét eszköz írhat és olvashat fájlrendszert" dolgot a Microsoft már a Windows Mobile 2002 idején megoldotta az ActiveSync-kel (és azóta elrontotta a Zune-nal :( ), az Apple pedig később az első iPhone érkezésekor oldotta meg az (enélkül is épp eléggé bloated, Win alatt SSD nélkül fél percig elinduló) iTunes-szal. Androidnál ez sokáig szabványtalanul ment, a gyártók által szállított amúgy is szinte kivétel nélkül katasztrofálisra sikeredett PC sync alkalmazásaival, ami helyett 10-ből 10-szer sikítva kereste a user a Mass Storage funkciót. (Az elmúlt 10 évben nem láttam olyan PC <-> telefon sync alkalmazást, ami ne lett volna tele hatalmas bugokkal.) Nos, ki kellett náluk is találni valamit a Mass Storage leváltására, mert kezdett ciki lenni, hogy a GPS szoftver nem képes betölteni a nyaraláshoz a térképet, miközben indulás előtt 20 perccel elkezded másolni a zenéket amit az úton hallgatni fogsz. Ez a megoldás lett a Google Media Transfer Protocolja. Ezzel két gond van:

-Windowson és (alapesetben) OS X-en továbbra is a harmatgyenge PC Sync alkalmazásokon keresztül megy ez a dolog. Körülbelül 10 napja húzott fel, hogy egy óra kattintgatás után se tudtam láthatóvá és írhatóvá tenni egy HTC One X fájlrendszerét az OS X-es HTC Sync-kel A HTC Sync csicsás GUI-ja pedig a legkevésbé se volt intuitív, tipped se lehetett, hogy hol lehet a hiba (bár az újraindítás után másképp villogó másodpercenként ismeretlen alkalmazást megnyitó és bezáró képernyő próbált utalni arra, hogy elképzelhető, hogy a telefonon is el van szúrva valami). Korábban egy Sony Ericsson PC suite-tal láttam megjelenni Windows intézőben a media device-t, ez már kezdett hasonlítani az ActiveSync-re, de rontotta a UX-et, hogy az a PC Sync alkalmazás szeret néha hibaüzenettel elszállni (ami még mindig jobb, mint amikor az HTC Sync fut tovább hibával de hibaüzenet nélkül).
-Linuxon kézzel kell feltenned az mtpfst, ami a Google go nyelvét is magával rántja. Nos, sikerült is vele felmountolnom a fájlrendszert, de a mappák üresek voltak :( Egy-két apk fájl megjelent a gyökérkonyvtáramban, de az mtpfs-es mappa szerint nincsenek zenéim és képeim.

Utánanéztem mi lehet ez:
http://android.stackexchange.com/questions/46315/not-all-files-are-visi…

A Google 2012 októbere óta ül a bugreporton. Egy ilyen alapvető feature bugreportján. Mert az ember vesz egy Androidos telefont, mi az első User Experience? Az, hogy telepakolja zenével meg kontakttal gépről. Úgy látszik a Google-nek ez nem fontos hogy nem működik jól és pontosan.

És ez is azt az elméletemet igazolja, amit legutóbb leírtam: a Cyanogen Inc. lesz az Android világ Red Hat-je. Főleg belegondolva hogy az Androidot már nem csak telefonokban használják, hanem kezd elterjedni embedded rendszerekben, TV-kben, stb.-kben, ott valljuk be, nem elég egy ilyen hozzáállású cég a supporthoz, mint a Google.

A kérdésem: tényleg nehéz lett volna SSHFS/SFTP alapokra építve megcsinálni ezt a protokolt? Muszáj volt nulláról rosszul megírni? Csak nekem triviális hogy azzal pillanatok alatt meglenne és működne? De még SSH-n kívüli kliens-szerver modellben is lehetett volna gondolkodni, akár még azt is meg lehetett volna oldani, hogy a másik eszköz által éppen írt fájl jogosultsága az éppen fájlon nem dolgozó eszközön az írás befejezéséig 000 lesz.

(
A Mass storage sem baj ha megmarad memóriakártyák esetén, csak az nagyon ne legyen default, tényleg csak azok használják, akik pl. partícionálni akarják a memóriakártyát, és azokra a fejlesztőknek se kell figyelnie, mert azok tudják, vagy legalább rájönnek idővel, hogy nem aközben kéne csodákat várni a térképszoftvertől pl.
)

Hozzászólások

Koszi az infot. Most derult ki, hogy FreeBSD-n el tudom erni a telefont, csak nem volt telepitve a megfelelo lib. (Mar megint az ArchWiki vilagitotta meg az elmemet.)

Lehet mi vagyunk benak, de parom Galaxy S4 Minijen nagyjabol 15 percbe kerult megoldani, hogy OSX alol lassa szepen es jol, az MTP-t teljesen megkerulve (developer mode => usb debugging, nem szep amde mukodik). Ettol persze nem lesz az MTP jobb, de a cel elerheto mindenfele ennel nagyobb es csunyabb hakolas nelkul.

--
|8]

Bocs, ezt nem értem. USB debug-ot beapcsolod és utána adb-vel toljátok oda-vissza a fájlokat? Vagy hogy. Amúgy mintha az USB-debug állandó bekapcsolva tartása biztonági okokból nem lenne jó ötlet (csak egy utalás rémlik, hogy simán feloldható a képernyőzár, ha be van kapcsolva).

Utalas? Inkabb bugreport remlik neked szerintem. Egyebkent nem, legalabbis a stock Android eseteben nincs ilyen jellegu kockazat, sot CyanogenMod es mas nagyobb modok eseten sincs (mar?) jelen az emlitett bug.

Az USB debug bekapcsolva tartasa csak annyibol jelent kockazatot, hogy ha valaki feldugja USB-re a telefonodat, akkor elvben korlatozas nelkul hozzaferhet az SD kartyan tarolt contenthez - de erre az az egyszeru megoldas, hogy nem adod oda senkinek a telefonodat.
--

Ki oda vagyik, hol szall a galamb, elszalasztja a kincset itt alant. 

"-Linuxon kézzel kell feltenned az mtpfst, ami a Google go nyelvét is magával rántja. Nos, sikerült is vele felmountolnom a fájlrendszert, de a mappák üresek voltak :( Egy-két apk fájl megjelent a gyökérkonyvtáramban, de az mtpfs-es mappa szerint nincsenek zenéim és képeim."

Nekem arch alatt KDE-hez csak a "kio-mtp" csomagot kellett felrakni, ami magával rántotta a "libmtp" csomagot és ennyi. Dolphin alól tökéletesen látszik a teló tartalma, írható/olvasható. Ennél simábban nem is mehetett volna. (Google go nem kellett hozzá, nincs is feltelepítve).

De egyébként vannak egyszerű kábelmentes megoldások is, pl egy ftp szerver a telóra, vagy csilivili AirDroid, aztán mehet wifin a file mozgatás.

Nem kell állandóan futnia, egy egyszerű programmal indítható és leállítható a szerver. Akkor kapcsolod be, amikor otthon a saját hálódon fájlokat akarsz másolni. Ráadásul vannak azért biztonsági beállítások -legalábbis abban, amit én használok-, user, password, könyvtár korlátozás, és ami a lényeg, hogy be lehet állítani, hogy csak az általam engedélyezett hálózatokon működjön. Idegen wifin, mobilneten nem megy, ha véletlenül bekapcsolva is maradna.

Én elvagyok mass storage móddal.Max fogom s microsd-t direktben berakom a laposba.Syncet is hasonlóan oldom meg,vagy netes alternatívával pl dropbox.

Nekem Arch-on simán megy az mtp, valamit felraktam hozzá anno, de Nemo-ban simán megjelenik a teljes belső memória (Nexus, nincs SD), ír/olvas.
Az AirDroid-ot is szoktam használni, mert az kicsit kényelmesebb (böngésző mindig van nyitva, kábelt meg keresni kell) és a sebessége is hasonló. Ajánlott.