1

プログラムで Android デバイスのスクリーンショットを撮りたいと思います。

この質問が何度も出されていることは知っています.私はそれを行う2つの方法を知っています.

  1. スクリーンショット ライブラリを使用します (ただし、常に黒い画面が表示されます)。
  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);
            }
        }
    });
    }'
    
4

2 に答える 2

0

通常、スクリーンショットを使用すると、画面イメージが取得されます。これはデバイスの問題である可能性もありますので、他のデバイスでも同じことを試してみることをお勧めします。

また、ファイルをsdに書き戻すときに問題が発生する可能性もあります。そのため、試した完全なコードを提供してください。

于 2013-02-27T18:17:17.963 に答える
-1

1 つの質問を複数回投稿しないでください。

次のコードを使用して、ビューの描画キャッシュを取得できます。

view.setDrawingCacheEnabled(true);
view.buildDrawingCache();
Bitmap b1 = view.getDrawingCache();
于 2013-02-27T17:13:04.947 に答える