如何以编程方式在Android设备上拍摄屏幕截图?

时间:2013-11-11 11:13:01

标签: android screenshot

我想拍摄设备的屏幕截图。但我的编码只在我的应用程序屏幕上进行..我需要获取设备的屏幕截图视图...并告诉如何运行服务。拍摄屏幕时间间隔应为500毫秒。

以下是屏幕截图代码:

Bitmap bitmap;
View v1 = MyView.getRootView();
v1.setDrawingCacheEnabled(true);
bitmap = Bitmap.createBitmap(v1.getDrawingCache());
v1.setDrawingCacheEnabled(false);

2 个答案:

答案 0 :(得分:0)

您可以查看

View view =  findViewById(R.id.rellayout);
        view.getRootView();
        String state = Environment.getExternalStorageState();
        if (Environment.MEDIA_MOUNTED.equals(state)) 
        {
            File picDir  = new File(Environment.getExternalStorageDirectory()+ "/name");
            if (!picDir.exists())
            {
                picDir.mkdir();
            }
            view.setDrawingCacheEnabled(true);
            view.buildDrawingCache(true);
            Bitmap bitmap = view.getDrawingCache();
//          Date date = new Date();
            String fileName = "mylove" + ".jpg";
            File picFile = new File(picDir + "/" + fileName);
            try 
            {
                picFile.createNewFile();
                FileOutputStream picOut = new FileOutputStream(picFile);
                bitmap = Bitmap.createBitmap(bitmap, 0, 0, bitmap.getWidth(), (int)(bitmap.getHeight()/1.2));//Optional
                boolean saved = bitmap.compress(CompressFormat.JPEG, 100, picOut);
                if (saved) 
                {
                    Toast.makeText(getApplicationContext(), "Image saved to your device Pictures "+ "directory!", Toast.LENGTH_SHORT).show();
                } else 
                {
                    //Error
                }
                picOut.close();
            } 
            catch (Exception e) 
            {
                e.printStackTrace();
            }
            view.destroyDrawingCache();
        } else {


        }

答案 1 :(得分:0)

如果您能够捕获应用程序的屏幕截图,那么只需创建一个接收器并接收您要捕获屏幕截图的事件 例如。

  <receiver android:name=".VolumeChangeReceiver" >
        <intent-filter>
            <action android:name="android.intent.action.MEDIA_BUTTON" />
        </intent-filter>
        <intent-filter android:priority="100" >
            <action android:name="android.intent.action.MEDIA_BUTTON" />
            <action android:name="android.media.VOLUME_CHANGED_ACTION" />
        </intent-filter>
    </receiver>

现在在接收者中你可以修改你的代码,即

 Bitmap bitmap;
 View v1 = MyView.getRootView();
 v1.setDrawingCacheEnabled(true);
 bitmap = Bitmap.createBitmap(v1.getDrawingCache());
 v1.setDrawingCacheEnabled(false);

您可以使用电源按钮 你想要捕捉屏幕截图的动作是你所希望的,

尝试它可能会有所帮助