Android —截屏

| 我需要进行屏幕截图并保存屏幕截图。我需要在不使用任何与PC的连接或不拔出手机的情况下执行此操作。每当事件触发时,我都需要这样做。例如,当广告在游戏中显示时……或游戏结束并用蛇等显示分数时,您能告诉我我该怎么做。我看到一些陀螺,他们给了代码,但这似乎不起作用
private void getScreen()
   {
    View content = findViewById(R.id.layoutRoot);
    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();
    }
}
    
已邀请:
        您能否提供更多有关运行该代码无效的信息?它不能捕获您想要的东西吗?它会崩溃吗? 确保您使用根布局正确更改了
R.id.layoutroot
...此外,看起来似乎可行...
<com.example.android.snake.SnakeView
 android:id=\"@+id/snake\"
    android:layout_width=\"match_parent\"
            android:layout_height=\"match_parent\"
            tileSize=\"24\"
            />

<RelativeLayout
    android:layout_width=\"match_parent\"
    android:layout_height=\"match_parent\" >

    <TextView
     android:id=\"@+id/text\"
        android:text=\"@string/snake_layout_text_text\"
        android:visibility=\"visible\"
        android:layout_width=\"wrap_content\"
        android:layout_height=\"wrap_content\"
        android:layout_centerInParent=\"true\"
        android:gravity=\"center_horizontal\"
        android:textColor=\"#ff8888ff\"
        android:textSize=\"24sp\"/>
</RelativeLayout>
编辑... 因此,例如,如果使用刚才放置的布局,则应将
R.id.layout
更改为
R.id.snake
,这是因为此行:
android:id=\"@+id/snake\"
。 我不认为有一种简单的方法来查找/获取视图的“ root”布局的ID(如果您想获取手机显示内容的屏幕快照,请执行以下操作)。 我刚刚检查了启动器和另一个应用程序,似乎大多数应用程序都已放入具有ID /内容的FrameLayout中,因此您可以尝试使用
android.R.id.content
,但没有保证每次都可以使用...     
        在调用getDrawingCache()之前,必须首先启用缓存。     
        
View ve = findViewById(R.id.loyout);
        ve.setDrawingCacheEnabled(true);
        Bitmap b = ve.getDrawingCache();

        String extr = Environment.getExternalStorageDirectory().toString()
                + \"/SaveCapture\";
        myPath = new File(extr);

        if (!myPath.exists()) {
            boolean result = myPath.mkdir();
            Toast.makeText(this, result + \"\", Toast.LENGTH_SHORT).show();
        }
        myPath = new File(extr, getString(R.string.app_name) + \".jpg\");

        Toast.makeText(this, myPath.toString(), Toast.LENGTH_SHORT).show();
        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) {

            Log.e(\"Error\", e + \"\");
        }

        catch (Exception e) {

            Log.e(\"Error\", e + \"\");
        }
    

要回复问题请先登录注册