私は何日もの間、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