プログラムで Android デバイスのスクリーンショットを撮りたいと思います。
この質問が何度も出されていることは知っています.私はそれを行う2つの方法を知っています.
- スクリーンショット ライブラリを使用します (ただし、常に黒い画面が表示されます)。
からルート化してフレームバッファからデータを取得します
\dev\graphics\fb0
(ただし、常に0バイトであり、デバイスの現在のスクリーンショットが保存されている正確な場所はわかりません)。私の好ましい要件は、より良いフレームレートを得ることです.私のコードはpublic void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); Intent intent = new Intent(); intent.setClass(this, ScreenshotService.class); bindService (intent, new ServiceConnection() { @Override public void onServiceDisconnected(ComponentName name) { } @Override public void onServiceConnected(ComponentName name, IBinder service) { try { asl = IScreenshotProvider.Stub.asInterface(service); } catch (Exception ex) { Log.e("errrorrrrrrrrrrrrr","errrorrrrrrrrrrr", ex); } } }, Context.BIND_AUTO_CREATE); Button b1=(Button) this.findViewById(R.id.widget33); b1.setOnClickListener(new OnClickListener() { public void onClick(View view) { try { asl.takeScreenshot(); } catch (RemoteException ex) { Log.e("nnnnerrrrrrrrrrrrrr","errrrrrrrrrrrrr",ex); } } }); }'