Android NDK Screenshot mittels native C/C++ ???

T

tukaa

Neues Mitglied
1
Hallo zusammen,

ich wollte ein screenshot app entwickeln. Leider gibt es keine möglichkeit mit Android SDK das zu realisieren. Aber in Vebindung NDK lässt sich möglicherweise das machen.

Ich habe viel recherchiert und ein code gefunden, welche mit c gebunden ist. Leider kann ich es nicht am laufen bringen.

Beschreibung Projekt map ScourceCode

im grundegenommen manipuliert er die Scource code von ADB Framebuffer Service und lässt von dev/graphics/fb0 ein bild erstellen.

Leider bekomme ich immer ein error "screenshot.raw file not found!".
Ich denke, dass die bufferreader.c nicht aufgerufen lässt. Wenn ich die Activity ansehe, finde keine NDK codes, obwohl da ein jni-Ordner mit Android.mk und c-file gibt.

Oder mach ich es ganz falsch bzw. anders??? Bitte hilf mir. Ich habe vor ein Monate mit Android-Programmierung angefangen und daher habe ich nicht viel Erfahrung.

hat jemand vielleicht erfahrung in sowas? Bitte Bitte hilfe.
Ich danke schonmal für eure Mühe.


Tuka
 
Code:
ls -al /dev/graphics/fb0
crw-rw----    1 root     graphics   29,   0 Aug 19 13:47 /dev/graphics/fb0
Wird nicht klappen.
 
bitte erklär mir warum?
ich habe keine Ahnung in linux also kann nicht viel von den Code verstehen.

Ich verwende hier

HTC desire mit root(2.1)
Eclipse Galileo + Android SDK & NDK
Windows 7 64 bit + Cygwin

Gibt es andere möglichkeiten, ein screenshot zu erstellen??? Es gibt doch mehrere screenshot apps im market. Die haben doch irgend ein weg gefunden screenshot zu erstellen.

MfG Tuka
 
Afaik brauchen alle Screenshot-Apps root, oder?
Wenn nun dein Code oben root benutzen will muss er sich den erst holen.
Ich glaube das meinte Kranki.
 
Der Besitzer von /dev/graphics/fb0 ist root, der hat Lese- und Schreibrechte. Die Gruppe ist graphics, auch die haben Lese- und Schreibrechte. Alle andere nicht.
Du bist alle anderen ;)
 
Also soweit ich es verstanden habe macht er es so.

Zuerste erstellet er ein screenshot.bmp in bufferreader.c

Code:
int screenshotHandle = open("/data/data/com.koushikdutta.screenshot/screenshot.bmp", O_WRONLY | O_CREAT);

danach die fb0 auslesen

Code:
framebufferHandle = open("/dev/graphics/fb0", O_RDONLY);

danach schreiben und ...

in Activity macht er es so:

Code:
Process sh = Runtime.getRuntime().exec("su -c sh"); // Super User????? oder doch nicht???

OutputStream os = sh.getOutputStream();

inal String file = "/data/data/com.koushikdutta.screenshot/screenshot.bmp";

int screenshotUid = getUidForPackage("com.koushikdutta.screenshot");
String screenshotUser = getUserForPackage("com.koushikdutta.screenshot");
writeCommand(os, "rm " + file);
writeCommand(os, "mkdir /sdcard/dcim");
writeCommand(os, "mkdir /sdcard/dcim/Screenshot");
writeCommand(os, "/data/data/com.koushikdutta.screenshot/screenshot");
writeCommand(os, "chown root." + screenshotUser + " " + file);
writeCommand(os, "chmod 660 " + file);
writeCommand(os, "exit");
os.flush();

aber ich frag mich, wo er die native code aufruft. Deswegen wird es kein screenshot.bmp erstellt und ich kriege error "file not found" (meiner meinung nach :( )

Wisst ihr ob es noch andere möglichkeiten für screenshot gibt.
 
Hast du denn Rootrechte und "su"? Sonst kannst du fb0 nicht auslesen.
 
habe ich !!! wenn ich es starte fragt es nach SuperUser und ich bestätige. lasse ein screenshot machen aber kriege fehler "screenshot.raw not found". Wie gesagt ich denke, dass die bufferreader.c läuft nicht. Habe selbst versucht mit NDK was zu basteln, leider habe ich es noch am laufen gebracht. Leider bin ich ein anfänger, was android betrift. Vor allem NDK habe ich null Ahnung. Denkt ihr, dass es funktioniern, wenn ich es richtig anstelle?

Und nochmals eine Alternative wäre willkomen.

Grüße Tuka
 

Ähnliche Themen

P
Antworten
5
Aufrufe
3.838
MisterRoboto
MisterRoboto
M
Antworten
4
Aufrufe
1.171
swa00
swa00
5
Antworten
0
Aufrufe
1.145
586920
5
Zurück
Oben Unten