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

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

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

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

Android

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

Q&A

解決済

1回答

6636閲覧

画面遷移した後画面が真っ暗になる状態になってしまいます

ko20vonobird

総合スコア50

Java

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

Android

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

0グッド

0クリップ

投稿2017/05/24 00:02

編集2017/05/24 11:40

###前提・実現したいこと
初めてアプリを一つ作っている過程で起きました。
アクティビティが二つあり、二つ目のアクティビティにはカスタムビューがあるアプリを製作しています。そんな中で完成したと思いテストしていると以下の問題が発生しました。

###発生している問題・エラーメッセージ
一部の端末で遷移した後の画面が真っ暗になり、本来想定している操作ができません。しかし、私の端末ではエラーメッセージはもちろん画面が暗くなることもなく、正常に遊べる状況です。全くもって何が原因なのかわかりません。解決へのお導き、共によろしくお願いします。

###該当のソースコード
問題の遷移先のコード

Java

1@Override 2 protected void onCreate(Bundle savedInstanceState) { 3 super.onCreate(savedInstanceState); 4 getWindow().addFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN); 5 getWindow().addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON); 6 requestWindowFeature(Window.FEATURE_NO_TITLE); 7 setNavigationbarHide(this, true); 8 LayoutInflater factory = LayoutInflater.from(this); 9 FrameLayout root = new FrameLayout(this); 10 View view = factory.inflate(R.layout.mixed, root); 11 setContentView(view); 12 cccc = (C) findViewById(R.id.display);

mixed.xml

xml

1<?xml version="1.0" encoding="utf-8"?> 2<android.support.percent.PercentFrameLayout 3 xmlns:android="http://schemas.android.com/apk/res/android" 4 android:layout_width="match_parent" 5 android:layout_height="match_parent"> 6 <View 7 android:layout_width="800dp" 8 android:layout_height="1000dp" 9 android:layout_gravity="center" 10 android:background="@drawable/mixeddisplay" 11 /> 12 <!--android:background="@drawable/mixeddisplay--> 13 <jpdb.shoichi_vono_kono.mrgbounding.C 14 android:id="@+id/display" 15 android:layout_width="match_parent" 16 android:layout_height="match_parent" /> 17</android.support.percent.PercentFrameLayout>

mixeddisplay.xml

xml

1<?xml version="1.0" encoding="utf-8"?> 2<shape xmlns:android="http://schemas.android.com/apk/res/android" 3 android:shape="oval"> 4 <size android:width="10dp" android:height="10dp" /> 5 <gradient android:angle="270" android:type="radial" android:gradientRadius="900dp" android:startColor="#86F9C5" android:endColor="#FFFF99" android:centerX="0.5" android:centerY="0.5" /> 6</shape>

###試したこと
inflate()の第二引数にroot = new FrameLayout(this)を代入しました。

###不具合の出ている端末の情報
・Xperia z5(Android 6.0.0以上)
・Galaxy S5(Android 6.0.0以上)

###アプリについての補足
・ターゲットはAndroid 5.0.0以上
・Xperia XZ(自分の端末)ではエラーなく正常に作動

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

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

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

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

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

guest

回答1

0

ベストアンサー

デバッグしないと解決しそうにありませんね。
まずは下記の確認をしてください。
・不具合の出ている端末の情報を質問に追記してください。
・Viewに対してタッチリスナーを追加し、各Viewを識別できる文字列が記載されたトーストを表示されるようにする。
・画面をタッチし黒色がどのViewなのかを確認してください。

投稿2017/05/24 01:22

yona

総合スコア18155

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

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

ko20vonobird

2017/05/24 08:14

回答ありがとうございます。不具合の出ている端末を現時点で得られている情報から追記させていただきました。新たに得られ次第返信していきます。 今現在不具合になる端末がないので取り敢えずコードを準備して結果が分かり次第コメントさせていただきます。
ko20vonobird

2017/05/24 11:51

申し忘れていたことがあるのですが、このアプリは加速度センサを使用しており、センサーの動きで(Surface)Viewの動きに影響を与えています。 改めまして、検証が区切りがついたのでご報告いたしますと、そもそものアプリの動作が停止しているようです。というのも黒い画面になった際トースト表示ができないどころか下のバーも出せなくなっていたからです。 そして、新たな状況が生まれたのですが、不具合があったスマホで全く同じ内容の(コメントアウト除く)apkファイル、つまりアプリをインストールして動かしてみると途中までは問題なく動きました。しかし、途中で急に画面が暗くなり以前のように動かせなくなりました。そしてアプリを一旦タスクキルして再びアプリを動かすと、加速度センサを使うアクティビティで暗くなっていた頃のデータが一度に発現したような高速描画がなされました。 私なりの推測ですが、加速度センサも関わっているのではないかと思いました。
ko20vonobird

2017/05/24 12:17

追加で情報なのですが、その後アプリをタスクキルしては動かしての繰り返しをしている過程で度々高速描画になる現象が起きるということなので、ただ単に暗い画面のデータが一度に発現したとは限らないかと思われます。
yona

2017/05/24 12:22

パーミッションをプログラム内で許可する処理を書いていますか? Android6以降ではパーミッションの取り扱いが変わっています。
ko20vonobird

2017/05/24 12:44 編集

パーミッションに関する処理は書いていません。 Android6以降では書く必要があるということですか? 追って調べたのですが、BODY_SENSORSとかの権限でしょうか?
ko20vonobird

2017/05/25 04:45

取り敢えずパーミッションの設定や記述をしました。まだ実行できる状況ではないので実行出来次第結果をお伝えします。
yona

2017/05/25 05:28

加速度センサーから受け取ったデータはどのような流れで画面に反映されますか? データベースに保存等はしていませんか?
ko20vonobird

2017/05/25 07:40

加速度センサーから受け取ったデータはまず普通にprivate変数に代入し、その後係数などを乗算したものをカスタムビューにsetで数値を反映させてSurfaceViewを再描画することで画面に反映させています。 特にデータベースに保存するなどはしておりません。
yona

2017/05/25 08:09

なるほど、データの取得処理が滞留しているわけではなさそうですね。 UIスレッドをブロックするような処理はありますか?
ko20vonobird

2017/05/25 09:20

UIスレッドをブロックするほどの操作は基本的にはほぼないと思います。ただ、このアプリにはSoundPoolとMediaPlayerを用いて音楽を流したりしています。そのロード作業で他の処理がストップしてしまうことは可能性としてはあるかもしれません。 また、センサーイベントが描画処理を呼び出すだけでなく、センサーイベントの中でセンサーイベントの合間に同じ描画処理を呼び出すハンドラを設けて描画を滑らかにしようとしています、もしかしたらそれもUIスレッドに影響をもたらしているかもしれません。
yona

2017/05/25 09:28

UIスレッドで描画命令が滞留しているのかもしれないですね。
ko20vonobird

2017/05/25 09:55

なるほど、では順番に確認していこうと思います。まず、パーミッションの確認をします。次に、音楽をロードする際の完了を受け取るリスナーを実装します。さらに、その描画処理の追加を取り除いてみます。 検証結果が出次第お伝えします。
ko20vonobird

2017/05/26 14:16

検証結果が出ました。今のところ画面が暗くなる原因は、SoundPoolより起因する詰まりでした。OnLoadCompleteListenerをセットして、それを踏まえて処理をさせることで暗くなることがなくなりました。また、描画の滞留に関してはアプリが応答しなくなるという現象で発現したのでそれも改善しました。 恐らくこれで解決できたと思います、万が一同じ現象がまた発生した場合は別の質問枠で質問させていただきます。 ありがとうございます。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問