1

ルート化されていない電話で動作する、外部ソフトウェアを使用せずに Android 画面をキャプチャする方法を見つける必要があります。

私の調査によると、それを行う方法はありません。いずれにせよ、デバイスの画面をキャプチャできるようにするには、ルート権限が必要です。

ただし、さらなる調査により、限られた数のデバイスがルート権限なしでそれを行う方法があることが示されています。証拠として、次のアプリケーションを Android マーケットに持ち込むことができます: スクリーンショット UX。

次のデバイスで画面をキャプチャするために、アプリはルート権限を必要としないと主張しています。

  • ギャラクシーシリーズ (S,S2,...)
  • HTC 電話 (センセーション、...)
  • モトローラ (アトリックス、...)。
  • LG Optimus シリーズ (G2X, ...)

Tegraデバイスもそれをサポートしていると言う人もいます。

たとえば、少なくとも特定のデバイスで、少なくともHTC電話をサポートできるように、誰かがいくつかのドキュメントを指摘できますか.

編集: 今のところ、「/system/bin/screencap」を使用しようとしていますが、エミュレーターでは成功しません。一部の特定のデバイスでスクリーンショットを取得できるということは、単に「/system/bin/screencap」を使用したり、/dev/graphics/fb0 から直接読み取ったりできるということですか?

それとも、スクリーンショットを撮るための API を提供していますか?

ありがとう。

4

1 に答える 1

0

スクリーン キャプチャは、Android で古くから議論されてきたトピックです。過去数年間で、いくつかの主要なオプションが開発されました。

  1. ルート化されたデバイスでスクリーンキャップを実行していますが、これは既に知っています。

  2. screencap を実行し、システム証明書を使用してアプリケーションを署名します。

アクセス許可 READ_FRAME_BUFFER がありますが、アプリがシステム アプリケーションとして署名されている場合にのみ取得できます。

  1. あらゆる種類のADBトリックを使用しますが、それらのほとんどはスクリーンキャプチャを使用しており、AFAIKではデバイスをPCに接続する必要があります.

しかし、Android 5 以降、状況は変わりました。

Android 5.0 では、新しい android.media.projection API を使用して、画面キャプチャと画面共有機能をアプリに追加できます。この機能は、ビデオ会議アプリで画面共有を有効にする場合などに便利です。

新しい createVirtualDisplay() メソッドを使用すると、アプリでメイン画面 (既定の表示) のコンテンツを Surface オブジェクトにキャプチャして、アプリがネットワーク経由で送信できるようになります。API では、安全でない画面コンテンツのみをキャプチャでき、システム オーディオはキャプチャできません。スクリーン キャプチャを開始するには、まず createScreenCaptureIntent() メソッドで取得した Intent を使用してスクリーン キャプチャ ダイアログを起動し、ユーザーの許可をアプリで要求する必要があります。

あなたが言及したデバイスはかなり古いものであり、Android 5 への正式な更新が行われたとは思えません。これにより、2 番目のオプションが残ります。

于 2017-06-11T13:55:43.093 に答える