繁体   English   中英

如何在没有扎根手机的情况下拍摄android屏幕截图而不是自己的活动视图?

[英]how to take screen shot of android screen not own activity view without rooted phone?

我已经写了代码。

public static void loadBitmapFromView(Context context, View v) {
    DisplayMetrics dm = context.getResources().getDisplayMetrics(); 
    v.measure(MeasureSpec.makeMeasureSpec(dm.widthPixels, MeasureSpec.EXACTLY),
            MeasureSpec.makeMeasureSpec(dm.heightPixels, MeasureSpec.EXACTLY));
    v.layout(0, 0, v.getMeasuredWidth(), v.getMeasuredHeight());
    Bitmap returnedBitmap = Bitmap.createBitmap(v.getMeasuredWidth(),
            v.getMeasuredHeight(), Bitmap.Config.ARGB_8888);
    Canvas c = new Canvas(returnedBitmap);
    v.draw(c);

    takeScreen(returnedBitmap);
}

public static void takeScreen(Bitmap bitmap) {
    //Bitmap bitmap = ImageUtils.loadBitmapFromView(this, view); //get Bitmap from the view
    String mPath = Environment.getExternalStorageDirectory() + File.separator + "screen_" + System.currentTimeMillis() + ".jpeg";
    File imageFile = new File(mPath);

    try {
        OutputStream fout = new FileOutputStream(imageFile);
        bitmap.compress(Bitmap.CompressFormat.JPEG, 90, fout);
        fout.flush();
        fout.close();
    } catch (FileNotFoundException e) {
        e.printStackTrace();
    } catch (IOException e) {
        e.printStackTrace();
    }

视图在哪里

View v1 = getWindow().getDecorView().findViewById(android.R.id.content).getRootView();

但这是我们应用程序当前活动的屏幕截图。 我想显示我的android当前屏幕而不是自己当前的活动屏幕。请提供解决方案。

不能在非root用户的设备上执行此操作。 这是Android安全性的基石之一-应用程序不能干扰其他应用程序或对其进行监视。

从本质上讲,截取另一个应用程序屏幕快照。 例如,假设您从不太可靠的来源下载并安装了一些有趣的游戏或无用的实用程序。 如果可以截取不属于自己的活动的屏幕截图,那么该游戏将能够截取您在网络浏览器中输入银行密码并将其发送回该应用程序的恶意开发者的屏幕截图。 那将是一场灾难,不是吗?

由于您证明已经有第三方应用程序(而不是三星应用程序)可以在某些三星设备上拍摄任何应用程序的屏幕截图。

我建议您尝试: http : //developer.samsung.com/home.do

如果他们的屏幕快照中没有明显的关于截屏的信息。 我建议您看看Samsung AllShare / Miracast SDK AllShare是Samsung自己的MiraCast扩展。 就像DNLA(如果您知道DNLA是什么)。 它允许开发人员/或用户在支持协议的电视上无线投影屏幕。

如果搜索没有成功,请查看s.pen sdk 并尝试看看他们是否公开了使用三星笔为第三方开发人员拍摄屏幕截图的方法。 现在,我意识到您的三星手机没有笔,但是由于三星设备之间有很多TouchWiz共享代码。 如果找到暴露的公共挂钩供spen用来拍摄屏幕快照,则可以在没有该spen的Samsung设备上找到它。

附带说明一下,如果您愿意支持仅Tegra设备。 甚至只有一些HTC设备和Xiomi设备使用Tegra,因此市场份额不是很大。 这似乎也是可能的:

https://play.google.com/store/apps/details?id=net.tedstein.AndroSS

为此,我建议您研究HTC SDK和Nvidia Tegra Development Pack 抱歉,我没有更多时间为您研究这些解决方案。 请在这里报告,以告诉我们您的发现,无论是正面还是负面。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM