使用原生 android API 截屏 [英] Taking Screenshot using native android API

查看:62
本文介绍了使用原生 android API 截屏的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

可能的重复:
如何以编程方式拍摄屏幕快照?

作为构建我的新应用程序的一部分,我希望允许用户使用我的应用程序中的按钮截取设备的屏幕截图.但是,我需要使用本机 API 在设备不root 的情况下完成此操作.

As part of building my new app, I would like to allow the user to take a screenshot of the device using a button in my app. However I need this done without rooting of the device, using native API.

我试图寻找参考资料和 android 开发者网站,但找不到执行上述操作的本机 API 功能.

I was trying to look for references and android developer site, but couldn't find the native API functionality to do the above.

您能否确认确实可以执行上述操作(以编程方式截取屏幕截图)?您能否也将我引导到我可以看到 API 的地方?

Can you please confirm that it is indeed possible to do the above (Taking a screenshot programmatically)? Can you please also direct me to somewhere I can see the API at?

推荐答案

试试这个代码:

public class ScreenShotActivity extends Activity {

    Bitmap bmScreen;
    RelativeLayout mLayout;
    Dialog screenDialog;
    static final int ID_SCREENDIALOG = 1;

    ImageView bmImage;
    Button btnScreenDialog_OK;
    // TextView TextOut;

    View screen;
    EditText EditTextIn;

    /** Called when the activity is first created. */

    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        screen = (View) findViewById(R.id.screen);
        Button btnCaptureScreen = (Button) findViewById(R.id.capturescreen);

        btnCaptureScreen.setOnClickListener(new OnClickListener() {

            public void onClick(View arg0) {
                // TODO Auto-generated method stub
                screen.setDrawingCacheEnabled(true);
                bmScreen = screen.getDrawingCache();
                saveImage(bmScreen);
                // showDialog(ID_SCREENDIALOG);
            }
        });
    }

    protected void saveImage(Bitmap bmScreen2) {
        // TODO Auto-generated method stub

        // String fname = "Upload.png";
        File saved_image_file = new File(
                Environment.getExternalStorageDirectory()
                        + "/captured_Bitmap.png");
        if (saved_image_file.exists())
            saved_image_file.delete();
        try {
            FileOutputStream out = new FileOutputStream(saved_image_file);
            bmScreen2.compress(Bitmap.CompressFormat.PNG, 100, out);
            out.flush();
            out.close();

        } catch (Exception e) {
            e.printStackTrace();
        }

    }

}

也添加权限:

<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>

用于此的 XML 将是:

XML for this will be:

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/screen"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:orientation="vertical" >

    <TextView
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:text="@string/hello" />

    <Button
        android:id="@+id/capturescreen"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:text="Capture Screen" />

    <ImageView
        android:id="@+id/imageView1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_centerHorizontal="true"
        android:layout_centerVertical="true"
        android:background="@drawable/roundcorner"
        android:scaleType="fitXY"
        android:src="@drawable/android_awesome" />

</RelativeLayout>

这篇关于使用原生 android API 截屏的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆