ich MediaProjection bin mit screenshot.This zu nehmen ist, was ich bin doing.I ein Overlay-Symbol erstellt mit service.On das Overlay-Symbol klicken ein Screenshot taken.The Problem ist, dass Immer wenn die Anwendung entweder durch Drücken der Zurück-Taste oder manuell durch Wischen beendet wird, ist das MediaProjection-Objekt verloren. Gibt es eine Möglichkeit, die MediaProjection beizubehalten und die Anforderung von MediaProjection jedes Mal zu vermeiden, wenn die Anwendung beendet wird. Ich habe bereits gesehen this, aber ich bin immer noch nicht in der Lage, es zu tun.Prevent MediaProjection Objekt aus auf die Tötung der Anwendung verloren
In meinem Mainactivity Onclick enthält startActivityForResult und die resultierende onActivityResult sich wie folgt:
@Override
protected void onActivityResult(final int requestCode,final int resultCode,final Intent data)
{
if (requestCode == requestcode)
{
if (resultCode == RESULT_OK)
{
Singelton.setScreenshotPermission((Intent) data.clone());
Singelton.putmanger(mediaProjectionManager);
}else if (resultCode==RESULT_CANCELED) {
Singelton.setScreenshotPermission(null);
}
}
}
Die Singelton-Klasse wie folgt:
protected static void setScreenshotPermission(final Intent permissionIntent)
{
screenshotPermission = permissionIntent;
//screenshotPermission becomes null once the application is killed
}
public static MediaProjection getData()
{
return (mediaProjection);
}
public static void getScreenshotPermission()
{
if (screenshotPermission != null)
{
Log.d("screenshotpermisson", "screenshotPermission != null ");
if(mediaProjection!=null)
{
Log.d("mediaprojection", "mediaprojection != null ");
mediaProjection.stop();
mediaProjection = null;
}
mediaProjection = mediaProjectionManager.getMediaProjection(Activity.RESULT_OK, (Intent) screenshotPermission.clone());
}
else
{
//Here I need to request for media projection again without starting activity
}
}
Meine Service-Klasse für Overlay-Symbol Griffe anklicken, wie folgt:
public void createDisplay()
{
if (mediaProjection == null)
{
Singelton.getScreenshotPermission();
mediaProjection = Singelton.getData();
}
mImageReader = ImageReader.newInstance(width, height, PixelFormat.RGBA_8888, 1);
vd = mediaProjection.createVirtualDisplay("screen-mirror", width, height, mDensity, DisplayManager.VIRTUAL_DISPLAY_FLAG_AUTO_MIRROR, mImageReader.getSurface(), null, null);
mImageReader.setOnImageAvailableListener(new ImageReader.OnImageAvailableListener(){..}
}
Ich bin neu zu Android und mit einem ha Die Zeit herauszufinden, dies aus. Jede Hilfe wird geschätzt.
Eine App, die in den Hintergrund verschoben wird, wird nicht unbedingt gelöscht. Es könnte getötet werden, um Speicher freizugeben, oder es könnte still sitzen, bis es nicht pausiert. Gibt es einen Grund, warum Sie die Medienprojektion nicht zum Zeitpunkt der Pause freigeben können und sie bei der Wiedergabe neu erstellen? – fadden