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

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

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

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

Android

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

Android Studio

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

Q&A

解決済

2回答

342閲覧

Android Stuidio エミュレータ:正常に動作 実機:アプリがダウン 【検証あり】

sekaikan_ozaki

総合スコア65

Java

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

Android

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

Android Studio

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

0グッド

1クリップ

投稿2019/06/06 05:59

編集2019/06/07 01:36

PCスペック
Windows10 HOME 64bit
メモリ 32GB
プロセッサ Intel Core i7-8700CPU 3.20GHz

Android Studio 3.4.1(最新ver)

デモ用端末(XPERIA OS:7.0 API 24)
エミュレータ1(Nexus S API 28)
エミュレータ2(Nexus S API 24)

表示する画像
画像1(幅2160×高さ3840ピクセル)
画像2(幅480×高さ640ピクセル)

Android Stuidioで、実機でのデモの際、画像の表示ができずにアプリがダウンしてしまう問題を解決したいです。

始めに、実機で画像1を表示しようとRUNを押したのですが、アプリが立ち上がらずダウンしてしまいました。
そこで、原因を探る方法をいくつか考えました。

検証
1、画像2(サイズが比較的小さい場合)は実機でも読み込めました。
2、エミュレータ1(OSが最新の場合)では画像1,2両方とも読み込めました。
3、エミュレータ2(OSが実機と同じ場合)でも両方とも読み込めました。

以上のことから、なぜ実機だけ、画像1を読み込もうとするとアプリがダウンするのでしょうか?
また、解決策はありませんでしょうか?

追記:
OutOfMemotyErrorが出ていたのでAndroidManifests.xmlにandroid:largeHeap="true"を追加しましたが、変わりませんでした。

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

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

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

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

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

guest

回答2

0

ベストアンサー

なぜ実機だけ、画像1を読み込もうとするとアプリがダウンするのでしょうか?

エミュレータで動いたので実機で大丈夫というのは危険です
特にAndroidは古いバージョンをサポートしたり、ユーザーが低いパフォーマンスの端末の場合もあるので

最近のスマホは一昔前のPC並みのパワーとリソースがあるのでうっかりするかもしれませんが
昔は画像サイズを500x500あたりで押さえていたりしましたね

カメラの写真はそれはそれとして保存して表示するときにスケールダウンするしかないでしょう

drawableassetsからの取り込みの場合はBitmapFactoryを使って画像をダウンサンプリリングすることができるためdrawableよりは比較的大きいファイルを取り込めます

またPicassoを使うと簡単にはできます
https://akira-watson.com/android/imageview.html/2#4

投稿2019/06/07 01:32

aja

総合スコア3733

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

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

sekaikan_ozaki

2019/06/07 02:38

回答ありがとうございます。 やはり、実機とエミュレータの違いも含めて理解すべきだったと思います。 >drawableassetsからの取り込みの場合はBitmapFactoryを使って画像をダウンサンプリリングすることができるためdrawableよりは比較的大きいファイルを取り込めます nyanさんのサイトで書いてあった内容を今一度振り返ってみました。 assetsから取り込んだ結果、ダウンサンプリングがうまくいったことで、画像1のサイズでもアプリを実行することができました! picassoに関しても試してみましたが、 with(this)の部分で赤いエラー(メソッド 'with(com.example.nazoru.MainActivity)'を解決できません)が出てしまい、こちらはうまくいきませんでした。 しかし、実現したかったことを1つ解決できたので、感謝いたします!本当にありがとうございました!
guest

0

adb のコマンドで logcat というコマンドがあります。
また Andrid studio の機能にもあります。
これで、エラーの原因を確認してみて下さい。

投稿2019/06/06 08:03

kamikaze.cappa

総合スコア558

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

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

sekaikan_ozaki

2019/06/06 08:40 編集

コメントありがとうございます。 Android Studio側の画面下でlogcatが使えたので、使ってみました。(Android初心者で、初めて使ってみたので使い方間違っているかもしれません。。) まずjavaファイルのクラス宣言の下に private static final String TAG = "TestActivity"; を入れて、 onCreate()の中で、Log.e(TAG,"メッセージ");と書いておいてから 画像1をdrawableに置いてある状態で、アプリを実行しました。 案の定アプリが停止し、 大量のエラーメッセージが出ましたが、その中で気になったのが java.lang.OutOfMemoryError: Failed to allocate a 298598412 byte allocation with 4233056 free bytes and 185MB until OOM です。 空き領域に割り当てが失敗しているようですが、 それでどうしたらよいのかがわかりません... スマホのメモリ不足などと関係があるのでしょうか?
kamikaze.cappa

2019/06/06 09:02

画像1(幅2160×高さ3840ピクセル) 画像が大き過ぎるのだと思います。
kamikaze.cappa

2019/06/06 09:07

<application android:name="jp.ogwork.sample.HogeApplication" android:label="@string/app_name" android:icon="@drawable/icon" android:largeHeap="true" > largeHeap="true" にしてダメでしょうか?
sekaikan_ozaki

2019/06/07 00:17

おはようございます。 AndroidManifests.xmlにandroid:largeHeap="true"を追加してみました。 しかしそれでも、アプリが起動段階でダウンしてしまいます。 画像1はそもそも、実機(XPERIA OS:7.0 API 24)のカメラで撮影した画像なので、表示したかったのですが、アプリ上で表示するとなるとサイズが大きすぎるということで間違いないのでしょうか。 現在、drawableに入れた画像をactivity_main.xmlで読み取っているのですが、Bitmapを使ってスケールを小さくする必要があるのでしょうか。
sekaikan_ozaki

2019/06/07 01:26

画像として読み込むタイミングで失敗しているのか、表示するタイミングで失敗なのか、その失敗のタイミング次第では、drawableに入れる画像のサイズをあらかじめ小さくしておくという対策以外に、javaファイルでBitmapを使ってスケールを小さくするのを早くすれば、もしかしたらアプリが正常に動く可能性はありますでしょうか。 OutOfMemoryErrorの割り当て失敗がどの意味での割り当て失敗なのかがわからなくて...
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.47%

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

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

質問する

関連した質問