RTV forum PL | NewsGroups PL

Jak połączyć MemoryFile z FileDescriptor w Androidzie dla efektywnego zapisu?

Android jeszcze raz :-)

NOWY TEMAT

elektroda NewsGroups Forum Index - Elektronika Polska - Jak połączyć MemoryFile z FileDescriptor w Androidzie dla efektywnego zapisu?

Goto page Previous  1, 2

J.F.
Guest

Thu Apr 21, 2011 11:25 pm   



On Thu, 21 Apr 2011 23:22:39 +0200, Lelek@ wrote:
Quote:
Prawdopodobmie MemoryFile to coś innego niż File
Wygląda na to, że masz bardzo starego androida:
http://www.androidjavadoc.com/2.3/android/os/MemoryFile.html

Ale nie moge pisać softu na system, którego nawet jeszcze nie ma w
telefonach. 2.3 jest sporadycznie, a sprzedanych tabletów ze starszymi
miliony

Zanim napiszesz, to proporcje moga sie zmienic :-)


Tylko wy nadal nie czytacie dokumentacji

"getFileDescriptor ...
Gets a FileDescriptor for the memory file. Note that this file
descriptor is only safe to pass to #MemoryFile(FileDescriptor,int)).
It should not be used with file descriptor operations that expect a
file descriptor for a normal file. ..."


J.

Lelek@
Guest

Thu Apr 21, 2011 11:35 pm   



"J.F." <jfox_xnospamx@poczta.onet.pl> wrote in message
news:80f1r65t6jdrhprdp0r7i24b4cvdlomou9@4ax.com...

Quote:
Tylko wy nadal nie czytacie dokumentacji

"getFileDescriptor ...
Gets a FileDescriptor for the memory file. Note that this file
descriptor is only safe to pass to #MemoryFile(FileDescriptor,int)).
It should not be used with file descriptor operations that expect a
file descriptor for a normal file. ..."

Ale to nie zmienia faktu, że poniżej 2.3 go nie ma Sad
Trzeba jakoś przejść przez
AssetFileDescriptor

i temu podobne. Nie wiem na razie do czego one są Smile

J.F.
Guest

Fri Apr 22, 2011 6:01 am   



On Fri, 22 Apr 2011 01:35:50 +0200, Lelek@ wrote:
Quote:
"J.F." <jfox_xnospamx@poczta.onet.pl> wrote in message
Tylko wy nadal nie czytacie dokumentacji
"getFileDescriptor ...
Gets a FileDescriptor for the memory file. Note that this file
descriptor is only safe to pass to #MemoryFile(FileDescriptor,int)).
It should not be used with file descriptor operations that expect a
file descriptor for a normal file. ..."

Ale to nie zmienia faktu, że poniżej 2.3 go nie ma Sad

Ja sie na Androidzie kompletnie nie znam, ale tu sie pojawia juz w
2008r. Chyba ze to propozycja na przyszlosc.
http://www.devdaily.com/java/jwarehouse/android/core/java/android/os/MemoryFile.java.shtml


Ja sie dalej nie znam - ale jesli to taki obiektowy system, to moze
mozesz napisac wlasna klase z potrzebnymi metodami ?

J.

Zakarm
Guest

Fri Apr 22, 2011 7:49 am   



W dniu 2011-04-21 22:39, Lelek@ pisze:
Quote:

"Michoo" <michoo_news@vp.pl> wrote in message
news:ioq40j$6cs$1@news.onet.pl...

Jak przybindować buf0 do fd żeby fd wskazywał na ta ten wirtualny plik?
Jak rozumiem z jakiś przyczyn nie możesz pobrać deskryptora do
MemoryFile przez metodę getFileDescriptor?

Jeszcze raz:

Jest sobie fakaś funkcja API nazwijmy ją setFoo("/scdard/lol.bin")
I pięknie zapisuje do external memory. Ale robi to bardzo wolno i boję
się że po milionach zapisów załatwię telefon.

Chcę te kilka plików zadeklarować w RAM-ie jako MemoryFile.

A temu tak chcę zrobić, bo inne funkcje chcą tworzyć pliki i nie
potrafia pisać do buforów, tablic.
Muszę te pliki buforowe zapisywać i czytać kilka razy na sekundę.

Obawiam sie ze jesli piszesz do NAND'a to zalatwisz ja po kilku
tysiacach zapisow.
A android to przeciez LINUX

J.F.
Guest

Fri Apr 22, 2011 11:52 am   



Użytkownik "Lelek@" <rennes@iw.iw> napisał w wiadomości
news:ioq3ff$4sv$1@opal.futuro.pl...
Quote:
Wiadomo, że telefony i tablety mają system plików w NAND flashu,
a ja muszę pisać sobie do tymczasowego pliku miliony razy.
Nie mam zielonego pojęcia co taki Android robi gdy widzi takie
zapisy i jak planuje to keszować.
Jest to też wolne. Plik mi nie jest do szczęścia potrzebny po
wielomilionowym używaniu go.

Czyli to ma byc taki tymczasowy plik do uzycia przez niektore
funkcje/programy ?
I one tam sobie cos zapisza, wkrotce potem odczytaja, a potem znow
zapisza i na koncu to nikomu nie bedzie potrzebne ?

Ja sie tam na Androidzie nie znam - ale czy nie da rady
skonfigurowac jakiegos malego ramdysku ?

J.

Lelek@
Guest

Fri Apr 22, 2011 12:50 pm   



"J.F." <jfox_xnospamx@poczta.onet.pl> wrote in message
news:iorq68$nac$1@news.onet.pl...

Quote:
Czyli to ma byc taki tymczasowy plik do uzycia przez niektore
funkcje/programy ?
I one tam sobie cos zapisza, wkrotce potem odczytaja, a potem znow zapisza
i na koncu to nikomu nie bedzie potrzebne ?

Ja sie tam na Androidzie nie znam - ale czy nie da rady skonfigurowac
jakiegos malego ramdysku ?


Właśnie usiłuję sie tego dowiedzieć Smile
Mam tylko do dyspozycji Javę. Mogę niby pisac niskopozopmowo w C++ ale to
rodzi wiele problemów z kompatybilnością między urządzeniami, procesorami w
środku. Nie ma mowy żeby używać czegoś innego niż Java.
Tylko w tej Javie jest tak głupio zrobione że korzystanie ze sprzetu nie
zawsze ma wszystkie funkcje jakie chcę.

Np mogę sobie pisać czy czytać do aparatu fotograficznego ale wszystkie
funkcje akceptują wyłącznie pliki. Nie mogę sobie pisać i czytać do bufora
buf[] i już.
Jak można czytać i pisać do bufora "buf[]" to znowu nie ma kontroli nad
innymi funkcjami kamery.

Niektóre funkcje - "metody" chcą za parametry tylko odniesienia do plików.
Jako programista nie mam uprawnień aby zapisywac pliki w innym miejscu niż
/SDCARD i błędne koło sie zamyka.

A mnie potrzeba kawałków tych plików do dalszej obróbki w locie.

Lelek@
Guest

Fri Apr 22, 2011 1:35 pm   



"J.F." <jfox_xnospamx@poczta.onet.pl> wrote in message
news:4762r6lp65ca1pcq5n46hrnh1l7ahc31r3@4ax.com...

Quote:
Ja sie na Androidzie kompletnie nie znam, ale tu sie pojawia juz w
2008r. Chyba ze to propozycja na przyszlosc.
http://www.devdaily.com/java/jwarehouse/android/core/java/android/os/MemoryFile.java.shtml


Ja sie dalej nie znam - ale jesli to taki obiektowy system, to moze
mozesz napisac wlasna klase z potrzebnymi metodami ?

Problemem jest komunikacja ze sprzetem tych własnych klas. Nie ma jak tego
zrobić żeby działało.
Są gotowe funkcje do gadania ze sprzetem ale są idiotyczne i chcą plików.

J.F.
Guest

Fri Apr 22, 2011 2:58 pm   



Użytkownik "Lelek@" <rennes@iw.iw> napisał w wiadomości
news:ios071$dqk$1@opal.futuro.pl...
Quote:
"J.F." <jfox_xnospamx@poczta.onet.pl> wrote in message
Ja sie dalej nie znam - ale jesli to taki obiektowy system, to
moze
mozesz napisac wlasna klase z potrzebnymi metodami ?

Problemem jest komunikacja ze sprzetem tych własnych klas. Nie ma
jak tego zrobić żeby działało.
Są gotowe funkcje do gadania ze sprzetem ale są idiotyczne i chcą
plików.

Ja sobie najpierw pomyslalem ze skoro ten filedescriptor to obiekt,
do ktorego potem te funkcje wywoluja rozne metody plikowe, to
mozesz utworzyc wlasny obiekt z takimi samymi metodami i powinno
zadzialac.

A potem sobie popatrzylem na te przyklady, przypomnialem unixa w
ogole .. tam moze nie byc zadnych klas, nr pliku to mala liczba
calkowita, wywoluje sie funkcje systemu, a system sprawdza co sie
pod tym numerkiem kryje dla procesu. A dla dzielonej pamieci mamy
tylko takie podobienstwo ze identyfikator tez jest liczba - reszta
moze byc calkiem inna.
Choc to w sumie .. jeszcze niekoniecznie pomysl z klasami wyklucza.

No to ciagle nic nie wiemy, musisz lepiej zorientowanych pytac Smile
Albo jednak dojsc do wniosku ze tak sie nie da i szukac jakiegos
ramdysku do systemu.

J.

Lelek@
Guest

Fri Apr 22, 2011 3:27 pm   



"J.F." <jfox_xnospamx@poczta.onet.pl> wrote in message
news:ios52h$sqt$1@news.onet.pl...

Quote:
No to ciagle nic nie wiemy, musisz lepiej zorientowanych pytac Smile
Albo jednak dojsc do wniosku ze tak sie nie da i szukac jakiegos ramdysku
do systemu.

Właśnie.
Ten Android jest strasznie niedorobiony. Wiele urządzeń nie daje się nawet
aktualizować, a zanim zejdą z rynku to może minie kilka lat.

Lelek@
Guest

Fri Apr 22, 2011 3:33 pm   



"J.F." <jfox_xnospamx@poczta.onet.pl> wrote in message
news:ios52h$sqt$1@news.onet.pl...

Chyba nie ma czegoś takiego jak ramdysk w androidzie, przynajmniej z poziomu
javy. Zresztą strona android developer też nic nie zwraca na hasło ramdisk
pisane w różnych kombinacjach.

J.F.
Guest

Fri Apr 22, 2011 4:07 pm   



Użytkownik "Lelek@" <rennes@iw.iw> napisał w wiadomości
news:ios74u$svi$1@opal.futuro.pl...
Quote:
Chyba nie ma czegoś takiego jak ramdysk w androidzie,
przynajmniej z poziomu javy.

Nie myslalem o poziomie javy.
W systemie zainstalowac/skonfigurowac, zamontowac gdzies, a z javy
odwolywac sie normalnie jak do plikow.

Quote:
Zresztą strona android developer też nic nie zwraca na hasło
ramdisk pisane w różnych kombinacjach.

ale google zna, tylko jakos inaczej - bootowalne obrazy. Czy to
jest dostepne pozniej to nie wiem.


J.

Lelek@
Guest

Fri Apr 22, 2011 4:53 pm   



"J.F." <jfox_xnospamx@poczta.onet.pl> wrote in message
news:ios94f$b2t$1@news.onet.pl...

Quote:
ale google zna, tylko jakos inaczej - bootowalne obrazy. Czy to jest
dostepne pozniej to nie wiem.

To chodzi o symulator telefonu na PC-cie.

J.F.
Guest

Sat Apr 23, 2011 7:10 am   



On Thu, 21 Apr 2011 22:39:06 +0200, Lelek@ wrote:
Quote:
Jak przybindować buf0 do fd żeby fd wskazywał na ta ten wirtualny plik?
Jak rozumiem z jakiś przyczyn nie możesz pobrać deskryptora do MemoryFile
przez metodę getFileDescriptor?

Jeszcze raz:
Jest sobie fakaś funkcja API nazwijmy ją setFoo("/scdard/lol.bin")
I pięknie zapisuje do external memory. Ale robi to bardzo wolno i boję się
że po milionach zapisów załatwię telefon.
Chcę te kilka plików zadeklarować w RAM-ie jako MemoryFile.

Zyczenie jest rozsadne .. ale jak znam zycie nic z tego nie wyjdzie w
ten sposob.
Zadeklarujesz sobie .. i co ? nadal /scdard/lol.bin bedzie na karcie.
Funcja plik otworzy, zapisze, zamknie a twoj memoryfile w ogole nie
bedzie uzyty.

Tak jak pisalem - moze ci sie uda ramdysk zalozyc i zamontowac,
podasz pliki "/sdcard/rd/xx.bin" czy "/tmp/rd/xx.bin" i zadziala.
no wlasnie - moze nie trzeba nic zakladac, tylko podac /tmp ?

Mozesz poszukac ambitnych ustawien systemowych, moze sie da jakos
opoznic zapis do pliku, i usunac go zanim zostanie zapisany.

Mozesz sprawdzic czy funkcja dopusci uzycie named pipes - o ile
Android je posiada.
http://en.wikipedia.org/wiki/Named_pipe

http://stackoverflow.com/questions/2740321/how-to-create-named-pipe-mkfifo-in-android
http://forum.4programmers.net/Java/168866-named_pipes_miedzy_java_a_cc++delphi_etc

Uwazaj - normalnie to ma ok 4kB, wiec trzeba odbierac dane rownolegle
z zapisywaniem ich przez funkcje jesli jest ich wieksza ilosc.



Jesli natomiast ta funkcja dopuszcza podanie FileDescriptor zamiast
nazwy pliku ... no, moze i owiera sie pare nowych mozliwosci.
Jesli ta funkcja korzysta z mmap, chocby posrednio
http://linux.die.net/man/2/mmap

to jest podobienstwo do ashmem
http://www.androidenea.com/2010/03/share-memory-using-ashmem-and-binder-in.html

Jako ze ten fd jest tu dana podstawowa - mysle ze jest dostepny z
Memoryfile.

Ale czy to zadziala - sporo tu "jesli" .
Ale jesli pozwala podac fd, to moze zwykly pipe uda sie wykorzystac ?


J.

Goto page Previous  1, 2

elektroda NewsGroups Forum Index - Elektronika Polska - Jak połączyć MemoryFile z FileDescriptor w Androidzie dla efektywnego zapisu?

NOWY TEMAT

Regulamin - Zasady uzytkowania Polityka prywatnosci Kontakt RTV map News map