質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.34%
Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

Android

Androidは、Google社が開発したスマートフォンやタブレットなど携帯端末向けのプラットフォームです。 カーネル・ミドルウェア・ユーザーインターフェイス・ウェブブラウザ・電話帳などのアプリケーションやソフトウェアをひとつにまとめて構成。 カーネル・ライブラリ・ランタイムはほとんどがC言語/C++、アプリケーションなどはJavaSEのサブセットとAndroid環境で書かれています。

Android Studio

Android Studioは、 Google社によって開発された、 Androidのネイティブアプリケーション開発に特化した統合開発ツールです。

Q&A

1回答

196閲覧

アプリ内のボタンを押すとスクリーンショットを取る機能を作りたい

roku66

総合スコア0

Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

Android

Androidは、Google社が開発したスマートフォンやタブレットなど携帯端末向けのプラットフォームです。 カーネル・ミドルウェア・ユーザーインターフェイス・ウェブブラウザ・電話帳などのアプリケーションやソフトウェアをひとつにまとめて構成。 カーネル・ライブラリ・ランタイムはほとんどがC言語/C++、アプリケーションなどはJavaSEのサブセットとAndroid環境で書かれています。

Android Studio

Android Studioは、 Google社によって開発された、 Androidのネイティブアプリケーション開発に特化した統合開発ツールです。

0グッド

1クリップ

投稿2025/01/16 14:29

編集2025/01/16 14:32

実現したいこと

Android13 の環境にて、アプリ内のボタンを押すとスクリーンショット(音量マイナス+電源ボタンで取れるものと同じもの)を取る機能を作成したいと考えています。

発生している問題・分からないこと

画面全体をViewを取得→Bitmapで保存 とすればよいのはわかったのですが、
rootViewで取得した場合、画面が黒塗りされてしまい、きちんとスクリーンショットが取れませんでした。
そこで
https://qiita.com/mizu55/items/94c9bc44437c1008177b
を参考にし、
サービスを作りオーバーレイビューからスクリーンショットを取れないか試していたのですが、
途中の「Settings.canDrawOverlays」で開く「他のアプリの上に重ねて表示」の設定画面に、
作成しているアプリが表示されず、困っています。

スクリーンショットを取る良い方法はないでしょうか。

該当のソースコード

特になし

試したこと・調べたこと

  • teratailやGoogle等で検索した
  • ソースコードを自分なりに変更した
  • 知人に聞いた
  • その他
上記の詳細・結果

https://stackoverflow.com/questions/2661536/how-to-programmatically-take-a-screenshot-on-android
View v1 = getWindow().getDecorView().getRootView();
で取得をすると、キャプチャした画面が真っ黒になることがある。

Androidでアプリ外のスクリーンショットを撮る
https://qiita.com/mizu55/items/94c9bc44437c1008177b
途中の「Settings.canDrawOverlays」で開く「他のアプリの上に重ねて表示」の設定画面に、
作成しているアプリが表示されない。

補足

特になし

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

jimbe

2025/01/17 04:09

qiita の記事にはサンプルのプロジェクトを格納した guthub のリンクがありましたが、サンプルを丸ごと取ってきて何も修正せず実行してそのような状況なのでしょうか。 それともサンプルはあくまで参考で必要そうなモノだけ取り出してきてご自身のプログラムに反映しての状況なのでしょうか。
roku66

2025/01/17 12:26

サンプルとしているqiitaの記事のものはKotlinで書かれていますが、今回私はjavaで開発を行っているため、参考にしている程度です。 そのためサンプルコードそのまま実行は行っていませんでした。 また先ほどデバッグ実行を行ったところ、ビルドエラーが多数発生し、こちらの解決にも時間がかかりそうなため、参考程度にすることにしています。
jimbe

2025/01/17 14:29

なるほど、ありがとうございました。
guest

回答1

0

[リートン]により生成された文章です

・アプリのAndroidManifest.xmlに以下のパーミッションを追加します。

xml

1<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/> 2<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/>

・スクリーンショットを撮るメソッドの作成

java

1public void takeScreenshot() { 2 // Viewのキャプチャ 3 View rootView = getWindow().getDecorView().getRootView(); 4 rootView.setDrawingCacheEnabled(true); 5 Bitmap bitmap = Bitmap.createBitmap(rootView.getDrawingCache()); 6 rootView.setDrawingCacheEnabled(false); 7 8 // スクリーンショットを保存 9 try { 10 File file = new File(Environment.getExternalStorageDirectory() + "/screenshot.png"); 11 FileOutputStream fos = new FileOutputStream(file); 12 bitmap.compress(Bitmap.CompressFormat.PNG, 100, fos); 13 fos.flush(); 14 fos.close(); 15 Toast.makeText(this, "スクリーンショットを保存しました: " + file.getAbsolutePath(), Toast.LENGTH_SHORT).show(); 16 } catch (IOException e) { 17 e.printStackTrace(); 18 } 19}

・ボタンのクリックリスナーを設定

java

1Button screenshotButton = findViewById(R.id.screenshot_button); 2screenshotButton.setOnClickListener(new View.OnClickListener() { 3 @Override 4 public void onClick(View v) { 5 takeScreenshot(); 6 } 7});

投稿2025/01/17 05:09

編集2025/01/17 05:10
HoshiMizu

総合スコア36

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

roku66

2025/01/17 12:20

jimbeさんの指摘もそうですが、 冒頭のパーミッションの追加も、Android13 では不要および別の権限に変える必要があるものです。 ですので、上記の内容では解決できません。 恐らくAIによる回答かと思いますが、AIを使用した回答を行わないようお願いします。 まだ私自身がバッド評価を送れる条件を満たせていないため、そのままにさせていただきます。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.34%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問