Tout d'abord je suis en train d'écrire une racine de l'application des permissions de root sont pas un problème. J'ai cherché et cherché et trouvé beaucoup de code qui n'a jamais travaillé pour moi ici, c'est ce que j'ai rassemblés jusqu'à présent et sorta de travaux. Quand je dis sorta je veux dire qu'il fait une image sur mon /sdcard/test.png toutefois, le fichier est de 0 octets et ne peuvent évidemment pas être vu.
public class ScreenShot extends Activity{
View content;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.blank);
content = findViewById(R.id.blankview);
getScreen();
}
private void getScreen(){
Bitmap bitmap = content.getDrawingCache();
File file = new File("/sdcard/test.png");
try
{
file.createNewFile();
FileOutputStream ostream = new FileOutputStream(file);
bitmap.compress(CompressFormat.PNG, 100, ostream);
ostream.close();
}
catch (Exception e)
{
e.printStackTrace();
}
}
}
Toute aide sur comment je peux prendre une capture d'écran sur android via le code serait grandement apprécié merci!
===EDIT===
La suite est tout ce que je suis en utilisant l'image est faite sur ma sdcard et n'est plus 0bytes mais la chose entière est noir il n'y a rien sur elle. J'ai lié l'activité de mon bouton de recherche donc, quand je suis quelque part sur mon téléphone, je appuyez longuement sur la recherche et il est censé prendre une capture d'écran mais je viens d'obtenir une image en noir? Tout est transparent, donc je pense qu'il doit la saisir tout ce qui est sur l'écran mais je reçois noir
Manifeste
<activity android:name=".extras.ScreenShot"
android:theme="@android:style/Theme.Translucent.NoTitleBar"
android:noHistory="true" >
<intent-filter>
<action android:name="android.intent.action.SEARCH_LONG_PRESS" />
<category android:name="android.intent.category.DEFAULT" />
</intent-filter>
</activity>
XML
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="#00000000"
android:id="@+id/screenRoot">
</LinearLayout>
Capture d'écran de la classe
public class ScreenShot extends Activity{
View content;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.screenshot);
content = findViewById(R.id.screenRoot);
ViewTreeObserver vto = content.getViewTreeObserver();
vto.addOnGlobalLayoutListener(new OnGlobalLayoutListener() {
@Override
public void onGlobalLayout() {
content.getViewTreeObserver().removeGlobalOnLayoutListener(this);
getScreen();
}
});
}
private void getScreen(){
View view = content;
View v = view.getRootView();
v.setDrawingCacheEnabled(true);
Bitmap b = v.getDrawingCache();
String extr = Environment.getExternalStorageDirectory().toString();
File myPath = new File(extr, "test.jpg");
FileOutputStream fos = null;
try {
fos = new FileOutputStream(myPath);
b.compress(Bitmap.CompressFormat.JPEG, 100, fos);
fos.flush();
fos.close();
MediaStore.Images.Media.insertImage(getContentResolver(), b, "Screen", "screen");
}catch (FileNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
finish();
}
}