2017-01-26 8 views
-2

Heyそこにはオーバーレイされたボタンを持っているアンドロイドのアプリケーションを作成したいと思います(オーバーレイボタンがクリックされた場合)、電話上のすべてのアプリケーションのスクリーンショット(FLAG_SECUREを除くこれらのものを除く)を撮りたいです。私はそれが可能であることを知っているので、このアプリは実際にそれを行う:https://play.google.com/store/apps/details?id=com.tools.screenshotどのアプリケーションのスクリーンショットを撮るのですか?

誰も私はこのスクリーンショットを行うことができますコードの例を知っていますか? 私はすでにオーバーレイボタンを持っているので、スクリーンショットコードが必要です。おかげ

すぎる答えとして幅広いが、古いブログからこれを持っていた
+0

は、メディア投影APIを使用しています。 – CommonsWare

+2

本、ツール、ソフトウェアライブラリ、チュートリアル、またはその他のオフサイトリソースを推薦する、または見つけることを尋ねる質問は、オピニオン回答と迷惑メールを引き付ける傾向があるため、スタックオーバーフローのトピックではありません。代わりに、問題を説明し、それを解決するためにこれまでに何が行われているかを記述します。 –

+0

@CommonsWareリファレンスやサンプルコードは知っていますか?私はいくつかのサンプルコードを見つけましたが、私は実際に自分のコードやサービスに実装することはできません:( – Luca486

答えて

0

import android.graphics.Bitmap; 
import android.os.Bundle; 
import android.os.Environment; 
import android.support.v7.app.AppCompatActivity; 
import android.view.View; 
import android.widget.Button; 
import android.widget.ImageView; 
import android.widget.TextView; 

import java.io.ByteArrayOutputStream; 
import java.io.File; 
import java.io.FileOutputStream; 

public class TakingScreenShotAndroid extends AppCompatActivity { 

TextView textView; 
ImageView imageView; 
Bitmap mbitmap; 
Button captureScreenShot; 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.taking_screenshot_in_android); 


    textView = (TextView) findViewById(R.id.textView); 
    textView.setText("Your ScreenShot Image:"); 

    captureScreenShot = (Button) findViewById(R.id.capture_screen_shot); 
    imageView = (ImageView) findViewById(R.id.imageView); 

} 

public void screenShot(View view) { 
    mbitmap = getBitmapOFRootView(captureScreenShot); 
    imageView.setImageBitmap(mbitmap); 
    createImage(mbitmap); 
} 

public Bitmap getBitmapOFRootView(View v) { 
    View rootview = v.getRootView(); 
    rootview.setDrawingCacheEnabled(true); 
    Bitmap bitmap1 = rootview.getDrawingCache(); 
    return bitmap1; 
} 

public void createImage(Bitmap bmp) { 
    ByteArrayOutputStream bytes = new ByteArrayOutputStream(); 
    bmp.compress(Bitmap.CompressFormat.JPEG, 40, bytes); 
    File file = new File(Environment.getExternalStorageDirectory() + 
      "/capturedscreenandroid.jpg"); 
    try { 
     file.createNewFile(); 
     FileOutputStream outputStream = new FileOutputStream(file); 
     outputStream.write(bytes.toByteArray()); 
     outputStream.close(); 
    } catch (Exception e) { 
     e.printStackTrace(); 
    } 
    } 

} 

のstrings.xml

<string name="app_name">Taking Screenshot in Android Programmatically</string> 
TakingScreenShotAndroid.java

taking_screenshot_in_android.xml

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
android:id="@+id/layout" 
android:layout_width="fill_parent" 
android:layout_height="fill_parent" 
android:layout_margin="16dp" 
android:gravity="center" 
android:orientation="vertical"> 


<Button 
    android:id="@+id/capture_screen_shot" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:onClick="screenShot" 
    android:text="Take ScreenShot" /> 

<TextView 
    android:id="@+id/textView" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:layout_margin="5dp" 
    android:text="" /> 

<ImageView 
    android:id="@+id/imageView" 
    android:layout_width="200dp" 
    android:layout_height="250dp" 
    android:background="#ccc" 
    android:padding="5dp" /> 

<TextView 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent" 
    android:autoLink="web" 
    android:gravity="center|bottom" 
    android:text="ViralAndroid.com" 
    android:textSize="26sp" 
    android:textStyle="bold" /> 
</LinearLayout> 

出力:アンドロイド5.0以上で

enter image description here

+0

このコードは自分のアプリケーションのスクリーンショットのみを取得しますか? – Luca486

+0

@ Luca486はい、同じです。しかし、あなたがウィジェットにこのコードを入れたり、操作したりできます。これは一般的なスクリーンショットコードです。 – W4R10CK

関連する問題