2

私は何日もの間、SurfaceView のビットマップ スクリーンショットを取得しようとしてきましたが、調べれば調べるほど、現在、HTC のデバイスの Android OS 2.3.4 ベースの OS に対する解決策はないようです。

プラン B に進みます。別のブログを見つけたところです。「私の HTC Evo 3d では、電源ボタンを 1 ~ 2 秒間押し続けてからホーム ボタンを押すだけで、スクリーン ショットが撮れます。いいえ。アプリが必要です。」これは私のタブレットで完全に機能することがわかりました。

私はまた、これらのインテントがあることを掘り下げて知っています: android.intent.action.SCREEN_OFF & android.intent.category.HOME

(そのため、コードで 2 キー コンボを模倣して、このブルート フォース マナーでスクリーンショットを取得するために、一連のコード実験を試みましたが、残念ながら成功しませんでした)。

だから私の?-- Java コードから HTC デバイスのこの「スクリーンショット シーケンス」を呼び出す方法について、何か洞察を持っている人はいますか? (OSをだまして、電源キーを押しながらホームキーを同時にタップしていると思わせる必要があると仮定します)...

詳細:ここに私が試みているコードの抜粋があります:

ボタンをクリックしてテストを行います... ...

  Thread t = new Thread() {
    public void run() {
      Instrumentation inst = new Instrumentation();
      inst.sendKeyDownUpSync(KeyEvent.KEYCODE_POWER);
      Instrumentation inst2 = new Instrumentation();
      inst2.sendKeyDownUpSync(KeyEvent.KEYCODE_HOME);
    } // run
  }; // thread t

sendKeyDown (& hold) 動作またはその等価物が必要なため、inst.sendKeyDownUpSync が間違っているため機能しません

アドバイスありがとうございます。これが機能するようになったら、ここに解決策を投稿します。乾杯GH

PS; これを行うフードの下にカスタムインテントがあると思いますか? コール ツリーを覗いて、それが何であるかを調べるためのシステム ログはどこかにありますか?

編集 (詳細)... 2011 年 9 月 24 日

もっと。まだ機能していませんが、私はこの道を進んでおり、近いと思います...

// SIMULATE A を試みます (DOWN) + HOME を長押しして、HTC に「スクリーンショット」コマンドを呼び出すように指示します (警告: HTC タブレット固有の動作!)

        Thread tt = new Thread() {
        public void run() {
          final KeyEvent dapowerkey = new KeyEvent(KeyEvent.ACTION_DOWN, KeyEvent.KEYCODE_POWER); 

          Handler onesecondhandler = new Handler(); 
          onesecondhandler.postDelayed(new Runnable() {
            public void run() { 
              // fpr about 1 second send power down keystrokes (DOWN ONLY)
              while (true) { dispatchKeyEvent(dapowerkey); }
            }  // we are done running on the timer past time point
          }, 750);  // 3/4 second key press
          // send the HOME keystroke 
          Instrumentation inst1 = new Instrumentation();
          inst1.sendKeyDownUpSync(KeyEvent.KEYCODE_HOME);        
        } // outer thread run tp mpt block the GUI
      }; // outer thread t
      tt.start(); 
      ...

また、適切なインテントをデバイスの適切な場所に直接送信できれば、スクリーン キャプチャ機能を直接開始できるのではないかと考えました (これは私が本当に望んでいることです。いくつかのログ調査を通じて (Long-Power + Home HTC をクリックします) 「com.htc.mysketcher」(FlashActivity) というプログラムが呼び出されています...

繰り返しますが、これを理解したら、グループに投稿します...乾杯GH

4

0 に答える 0