20200713のAndroidに関する記事は6件です。

実機をUSB接続している時、adb devicesでofflineと表示されてしまう時

解決策

AVD を全て終了させる
実機をUSBから外す
実機の開発者向けオプションから、USBデバッグをオンにする

adb kill-server
adb start-server

を実行する

再度実機を接続する

  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

【Kotlin】RecyclerViewでクリック処理+長押しやダブルタップ時の処理を作る

やりたいこと

【イメージ画像】
gif.gif
RecyclerViewにて、タイトルにあるような数種類のクリックで異なる処理を行わせています。難しいように見えて意外とそうでもないので、ぜひ試してみてください。

クリックを検知させる

 ※RecyclerView本体が完成している前提で記事を書いています。

SimpleOnItemTouchListener

 今回はSimpleOnItemTouchListenerというコールバックのインターフェースを使ってクリック処理を記述します。このインターフェースはRecyclerViewのインターフェースの一つである、OnItemTouchListenerの互換性が高いバージョンです。RecyclerViewのタッチイベントを、スクロール動作と見なされる前に割り込むことが出来ます。このインターフェースを使うことで、非常に簡単にクリックの処理を作り出せます。
 最初にSimpleOnItemTouchListenerを拡張するクラスを作りましょう。以下のようになります。

class PracticeRecyclerItemClickListener() : RecyclerView.SimpleOnItemTouchListener() {

次に、インターフェースに定義されている、クリックを検出するためのメソッドを実装します。それは、onInterceptTouchEventと呼ばれるもので、RecyclerView自体やその子となるビューに設定されているイベントの前に割り込んで、タッチイベントを監視・引継ぎを行います。先ほど作ったクラスの中で、オーバーライドして下さい。

override fun onInterceptTouchEvent(rv: RecyclerView, e: MotionEvent): Boolean {
        Log.d("PracticeRecyclerItem", ".onInterceptTouchEvent called")
        return super.onInterceptTouchEvent(rv, e)
    }

取り敢えず本当にクリックを監視しているかをログで確認する為に、二行目でLogを設定してあります。

addOnItemTouchListener

 RecyclerViewのアダプターを設定する前に、先ほど記述した処理のリスナーをMainActivityに設定します。具体的には以下の二行目の様です。

recycler_view.layoutManager = LinearLayoutManager(this)
recycler_view.addOnItemTouchListener(PracticeRecyclerItemClickListener())
recycler_view.adapter = PracticeRecyclerViewAdapter(testList)

recycler_viewはビューのRecyclerViewのidです。addOnItemTouchListenerRecyclerView.OnItemTouchListenerのタッチイベントをインターセプトするコールバックメソッドです。

テスト

 この記述によって、簡易的なクリック処理が完成したはずです。アプリを起動して、ログを確認してみてください。

20XX-XX-XX XX:XX:XX.XXX XXXXX-XXXXX/com.e.practicerecyclerviewclick D/PracticeRecyclerItem: .onInterceptTouchEvent called

上手くいけば、クリックする度に↑のようにログに出力されるはずです。このように、SimpleOnItemTouchListeneraddOnItemTouchListenerを使えば簡単にクリックを検知することが出来ます。ここからは、クリックしたときにどういった処理を行わせるかについて書いていこうと思います。

クリックに処理を付ける

GestureDetector

 アンドロイドAPIのGestureDetectorを使って、クリックされた時の処理を作っていきます。このクラスは、さまざまなモーションやイベントを検出し、独自のコールバックメソッドからユーザーに通知してくれます。今回やりたいことは、前半でやったようにRecyclerViewの機能を使ってクリックを検知→それをGestureDetectorに渡して、普通のタップやダブルタップなどの違いに応じて処理を作るといった事です。GestureDetectorを使うためにまずはコンストラクタを追加します。具体的には以下のようです。

class PracticeRecyclerItemClickListener(context: Context, recyclerView: RecyclerView, private val listener: PracticeRecyclerItemClickListener.OnRecyclerClickListener)
    : RecyclerView.SimpleOnItemTouchListener() {

そして、クラスの中にインターフェースを定義します。

interface OnRecyclerClickListener{
        fun onItemClick(view: View, position: Int)
     fun onDoubleClick(view: View, position: Int)
        fun onItemLongClick(view: View, position: Int)
    }

このコールバックインターフェースを用いて、後ほどMainActivityにそれぞれのメソッドを実装します。今回は上記3つのメソッドを追加しようと思います。次に、onInterceptTouchEventメソッドを以下のように変更します。

override fun onInterceptTouchEvent(rv: RecyclerView, e: MotionEvent): Boolean {
        val result = gestureDetector.onTouchEvent(e)
        return result
    }

GestureDetectorが検知する全てのタップイベントを、resultという変数がキャッチしてくれます。そしてその結果を返すことで、RecyclerViewがタップされた時GestureDetectorのクリックイベントを起動することが出来ます。最後に、GestureDetectorを実体化したgestureDetectorを追加しましょう。

private val gestureDetector = GestureDetectorCompat(context, object : GestureDetector.SimpleOnGestureListener() {
        override fun onSingleTapConfirmed(e: MotionEvent): Boolean {

            val childView = recyclerView.findChildViewUnder(e.x, e.y)

            if (childView != null) {
                listener.onItemClick(childView, recyclerView.getChildAdapterPosition(childView))
            }
            return true
        }

        override fun onLongPress(e: MotionEvent) {
            val childView = recyclerView.findChildViewUnder(e.x, e.y)

            if (childView != null) {
                listener.onItemLongClick(childView, recyclerView.getChildAdapterPosition(childView))
            }
        }

        override fun onDoubleTap(e: MotionEvent): Boolean {
            val childView = recyclerView.findChildViewUnder(e.x, e.y)

            if (childView != null) {
                listener.onDoubleClick(childView, recyclerView.getChildAdapterPosition(childView))
            }
            return true
        }
    })

onSingleTapUponLongPressonDoubleTapをオーバーライドするだけでgestureDetectorは殆ど完成です。タイトルにある3種の操作に対応できます。あとはそのそれぞれに以下の同じような処理を書いていくだけです。

val childView = recyclerView.findChildViewUnder(e.x, e.y)

            if (childView != null) {
                listener.onLongPress(childView, recyclerView.getChildAdapterPosition(childView))
            }

この部分で、クリックされたRecyclerView内の子ビューを取得し、それ自身とそのポジションを先ほど定義したインターフェースOnRecyclerClickListener内のメソッドに渡しています。このように、非常に簡単に数種類のクリックに対応する処理を作ることが出来ます。また、GestureDetectorにはまだ有用なメソッドが定義されているので、以下の公式リファレンスを参照して、今回と同じように実装してみてください。
https://developer.android.com/reference/android/view/GestureDetector.SimpleOnGestureListener.html
 

Tips: GestureDetectorのメソッドにおける返り値(飛ばしてもおk)

 ここで、onSingleTapUponDoubleTapBooleanの型の返り値を持つのに、onLongPressはなぜ何も返さないのか気になった人がいるかもしれません。基本的に前者の二つのメソッドは、タップされるとtrueを返します。記事を辿ってもらうと分かりますが、その後trueという真偽値は、gestureDetectorを経由してresultに渡され、onInterceptTouchEventの返り値になります。このメソッドは、返り値がtrueの時、RecyclerViewやその子ビューに定義されているイベント全てに割り込んで、イベントを挿入します。これが意味するところは、onInterceptTouchEventの返り値がtrueになると、スクロールをはじめとしたRecyclerViewの操作が出来なくなるということです。シングルタップやダブルタップではそこまで困る話ではないのですが、長押しの時は話が別です。長押しを意図せず、画面に指を置いたまましばらく経っても、画面のスクロールは出来るようにしなければなりません。しかし、他のメソッドと同じようにtrueを返してしまうと、そうはいかず、スクロールが出来なくなってしまいます。したがって、onLongPressメソッドに関しては、そういった問題の為に敢えて返り値を返さないことで、スクロール等のビューの処理と共存できるように設計されています。

MainActivityに処理を書く!

 インターフェースOnRecyclerClickListenerに定義したメソッドを実装して処理を書いていきます。今回は次のようにして、インターフェースを実装します。

class MainActivity : AppCompatActivity(), PracticeRecyclerItemClickListener.OnRecyclerClickListener{

そしてMainActivityの中で、

override fun onItemClick(view: View, position: Int) {
        Toast.makeText(this, "普通のタップ", Toast.LENGTH_SHORT).show()
        Log.d("MainActivty", "普通のタップ")
    }

    override fun onItemLongClick(view: View, position: Int) {
        Toast.makeText(this, "長押しタップ", Toast.LENGTH_SHORT).show()
        Log.d("MainActivty", "長押しのタップ")
    }

    override fun onDoubleClick(view: View, position: Int) {
        Toast.makeText(this, "ダブルタップ", Toast.LENGTH_SHORT).show()
        Log.d("MainActivty", "ダブルタップ")
    }

のようにしてオーバーライドします。今回はログとトーストに呼び出されたことを示す処理を書きましたが、色々な応用の仕方があると思います。これにて必要なコーディングは終了です。あとはアプリを起動すれば思惑通り、タップに仕方によって異なる処理が可能なはずです。
【イメージ画像】
gif.gif

今回のコード全容

class PracticeRecyclerItemClickListener(context: Context, recyclerView: RecyclerView, private val listener: PracticeRecyclerItemClickListener.OnRecyclerClickListener)
    : RecyclerView.SimpleOnItemTouchListener() {

    interface OnRecyclerClickListener{
        fun onItemClick(view: View, position: Int)
        fun onDoubleClick(view: View, position: Int)
        fun onItemLongClick(view: View, position: Int)
    }

    private val gestureDetector = GestureDetectorCompat(context, object : GestureDetector.SimpleOnGestureListener() {
        override fun onSingleTapConfirmed(e: MotionEvent): Boolean {

            val childView = recyclerView.findChildViewUnder(e.x, e.y)

            if (childView != null) {
                listener.onItemClick(childView, recyclerView.getChildAdapterPosition(childView))
            }
            return true
        }

        override fun onLongPress(e: MotionEvent) {
            val childView = recyclerView.findChildViewUnder(e.x, e.y)

            if (childView != null) {
                listener.onItemLongClick(childView, recyclerView.getChildAdapterPosition(childView))
            }
            super.onLongPress(e)
        }

        override fun onDoubleTap(e: MotionEvent): Boolean {
            val childView = recyclerView.findChildViewUnder(e.x, e.y)

            if (childView != null) {
                listener.onDoubleClick(childView, recyclerView.getChildAdapterPosition(childView))
            }
            return super.onDoubleTap(e)
        }
    })

    override fun onInterceptTouchEvent(rv: RecyclerView, e: MotionEvent): Boolean {
        val result = gestureDetector.onTouchEvent(e)

        return result
    }
}
class MainActivity : AppCompatActivity(), PracticeRecyclerItemClickListener.OnRecyclerClickListener{

    private val practiceRecyclerViewAdapter = PracticeRecyclerViewAdapter(ArrayList())

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)

        val testList: List<String> = listOf("一行目", "二行目", "三行目", "四行目", "五行目")

        recycler_view.layoutManager = LinearLayoutManager(this)
        recycler_view.addOnItemTouchListener(PracticeRecyclerItemClickListener(this, recycler_view, this))
        recycler_view.adapter = PracticeRecyclerViewAdapter(testList)
    }

    override fun onItemClick(view: View, position: Int) {
        Toast.makeText(this, "普通のタップ", Toast.LENGTH_SHORT).show()
        Log.d("MainActivty", "普通のタップ")
    }

    override fun onItemLongClick(view: View, position: Int) {
        Toast.makeText(this, "長押しタップ", Toast.LENGTH_SHORT).show()
        Log.d("MainActivty", "長押しのタップ")
    }

    override fun onDoubleClick(view: View, position: Int) {
        Toast.makeText(this, "ダブルタップ", Toast.LENGTH_SHORT).show()
        Log.d("MainActivty", "ダブルタップ")
    }
}

 RecyclerView本体についてはかなり適当なリストを挿入しただけなので気にしないでください。

 

  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

【入門】AndroidStudio HelloWorldが表示される流れとよく使われるファイル

はじめに

Android Studioで、動作確認ができたあとなにを勉強すればいいのか?といった視点で投稿してみます。具体的にはHelloWorldをエミュレータ上に表示したあと、どういった流れで表示されるかを確認します。また、開発を行う上でよく使われるファイルを挙げて簡単に説明してみたいと思います。

環境と前提条件

  • windows10(64bit)
  • Android Studio 3.6.3(日本語化済み)
  • API 29(Android 10.0)
  • はじめの動作確認(HelloWorldの確認)ができている

はじめの動作確認はAndroid Studio Hello Worldをエミュレータ上に表示させる
を参考にしてみてください。

プロジェクトの中身を確認する

はじめに、「1.プロジェクト」の右隣のフィルタが「Android」になっていることを確認します。
作成したプロジェクトをAndroidStudioで開き、左側のタブ「1.プロジェクト」を開きます。
次に、下図のように5つほどファイルを開きます。
これらが、Android Studioをいじるにあたり主に作業するファイルになってくると思います。
2020-07-13 (10).png

各ファイルの中身を確認する

ひとつずつ見ていきます。

はじめに、MainActivity.javaです。
プロジェクト作成と同時に作成され、自動で一部ソースコードが書き込まれています。

ここではonCreate()に注目してみます。
これはアプリケーションを起動したときに実行されるメソッドになります。
setContentView()は後述するtextViewなどを画面に表示するために必要なメソッドになります。onCreate()内に実装されているということは起動と同時に表示するということになります。

他にも、onStop()やonDestroy()といったメソッドが存在します。
これらのメソッドはライフサイクルと呼ばれ、Android開発を行う上で重要なポイントとなってきます。
が、調べると色々出てくるのでここでは割愛します。
2020-07-13 (10).png



次に、activity_main.xmlです。
こちらもプロジェクト作成と同時に作成され、自動で一部ソースコードが書き込まれます。

左のソースコードと右の画面レイアウトはリンクしており、コードを変更するなり、画面部品を移動するなりして操作します。
ちなみに、右上の「属性」付近にある3種のボタンでソースコードとレイアウトの画面切り替えを行うことができます。

ここではTextView(9~16行目)に注目してみます。
ここのコードが画面レイアウトの「HelloWorld」とリンクしています。
文字の大きさや配置などを記載していくのですが、注目すべきは12行目のtext=の部分です。
HelloWorldと記載されています。ここで画面に表示する文字列をセットしているというわけです。
HelloWorldが勝手に表示される仕組みはここにありました!
2020-07-13 (15).png



次に、strings.xmlです。
今回注目すべきポイントはありませんが、これもよく使うファイルになります。
上記ではHelloWorldを直打ちしてtextに代入していましたが、
textに定数をセットしてstrings.xmlにてその定数に対応した文字列を指定することができます。
言葉のみでは伝えにくいので、これらも機会があれば投稿してみようと思います。
2020-07-13 (16).png



次に、AndroidManifest.xmlです。
今回注目するポイントはありませんが、これも重要なファイルになります。
エラーが解決できない、、、というときはここに問題がある可能性があります。
こちらも詳しくは説明しません(できません汗)が、頭の片隅に入れておくと良いと思います。
2020-07-13 (17).png



最後に、build.gradle(:app)です。
今回注目するポイントはありませんが、これも重要なファイルになります。
APIのversionなどか記載されており、例えばビルドが通らなかったり、インストールできなかったりする場合はこのファイルの設定をいじることになると思います。verdionによって使えるメソッドが変わってきたりもします。
2020-07-13 (18).png

さいごに

HelloWorldをエミュレータ上に表示したあと、どういった流れで表示されるかを確認しました。
開発を行う上でよく使われるファイルを挙げてみました。
最後までありがとうございました。なにか間違いなどあればコメントいただければと思います。

参考にしたサイト

  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

【入門】AndroidStudio HelloWorldが表示される流れ

はじめに

Android Studioで、動作確認ができたあとなにを勉強すればいいのか?といった視点で投稿してみます。具体的にはHelloWorldをエミュレータ上に表示したあと、どういった流れで表示されるかを確認します。また、開発を行う上でよく使われるファイルを挙げて簡単に説明してみたいと思います。

環境と前提条件

  • windows10(64bit)
  • Android Studio 3.6.3(日本語化済み)
  • API 29(Android 10.0)
  • はじめの動作確認(HelloWorldの確認)ができている

はじめの動作確認はAndroid Studio Hello Worldをエミュレータ上に表示させる
を参考にしてみてください。

プロジェクトの中身を確認する

作成したプロジェクトをAndroidStudioで開き、左側のタブ「1.プロジェクト」を開きます。ここで、「1.プロジェクト」の右隣のフィルタが「Android」になっていることを確認します。
次に、下図のように5つほどファイルを開きます。
これらが、Android Studioをいじるにあたり主に作業するファイルになってくると思います。
2020-07-13 (10).png

各ファイルの中身を確認する

ひとつずつ見ていきます。

はじめに、MainActivity.javaです。
プロジェクト作成と同時に作成され、自動で一部ソースコードが書き込まれています。

ここではonCreate()に注目してみます。
これはアプリケーションを起動したときに実行されるメソッドになります。
setContentView()は後述するtextViewなどを画面に表示するために必要なメソッドになります。onCreate()内に実装されているということは起動と同時に表示するということになります。

他にも、onStop()やonDestroy()といったメソッドが存在します。
これらのメソッドはライフサイクルと呼ばれ、Android開発を行う上で重要なポイントとなってきます。
が、調べると色々出てくるのでここでは割愛します。
2020-07-13 (10).png



次に、activity_main.xmlです。
こちらもプロジェクト作成と同時に作成され、自動で一部ソースコードが書き込まれます。

左のソースコードと右の画面レイアウトはリンクしており、コードを変更するなり、画面部品を移動するなりして操作します。
ちなみに、右上の「属性」付近にある3種のボタンでソースコードとレイアウトの画面切り替えを行うことができます。

ここではTextView(9~16行目)に注目してみます。
ここのコードが画面レイアウトの「HelloWorld」とリンクしています。
文字の大きさや配置などを記載していくのですが、注目すべきは12行目のtext=の部分です。
HelloWorldと記載されています。ここで画面に表示する文字列をセットしているというわけです。
HelloWorldが勝手に表示される仕組みはここにありました!
2020-07-13 (15).png



次に、strings.xmlです。
今回注目すべきポイントはありませんが、これもよく使うファイルになります。
上記ではHelloWorldを直打ちしてtextに代入していましたが、textに定数をセットしてstrings.xmlにてその定数に対応した文字列を指定することができます。
言葉のみでは伝えにくいので、これらも機会があれば投稿してみようと思います。
2020-07-13 (16).png



次に、AndroidManifest.xmlです。
今回注目するポイントはありませんが、これも重要なファイルになります。
エラーが解決できない、、、というときはここに問題がある可能性があります。
こちらも詳しくは説明しません(できません汗)が、頭の片隅に入れておくと良いと思います。
2020-07-13 (17).png



最後に、build.gradle(:app)です。
今回注目するポイントはありませんが、これも重要なファイルになります。
APIのversionなどか記載されており、例えばビルドが通らなかったり、インストールできなかったりする場合はこのファイルの設定をいじることになると思います。versionによって使えるメソッドが変わってきたりもします。
2020-07-13 (18).png

さいごに

HelloWorldをエミュレータ上に表示したあと、どういった流れで表示されるかを確認しました。
開発を行う上でよく使われるファイルを挙げてみました。
最後までありがとうございました。なにか間違いなどあればコメントいただければと思います。

参考にしたサイト

  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

Androidアプリ開発の第一歩 Javaのインストール、もといKotlin、もといAndroid Studuioのインストール!

はじめに

はじめまして。職場でのプログラム開発はほとんどないので、もう少し知識を深めたい点と、なんか楽しい開発したいなぁと思いAndroidのアプリ開発をしてみようと思い立ちました。
備忘録として、また、同じように趣味程度から、とか、プログラミングしたいけど何から始めてよいか・・・、と悩んでる方にお役に立てればと思い、自身の経験をQiitaでも共有しようと思います。
内容は超初心者向けです。私自身が初心者なので・・・。

開発言語はKotlinでチャレンジ!

色々調べてみたところ、Androidアプリ開発はGoogleがJava用の開発キット(Android Studio)を出してるだとか。Javaは学生時代の授業で2か月ほど触っただけだけど、まぁやってみるか。

と思いきや・・・。

GoogleはKotlinをAndroidアプリ開発の推奨言語に格上げ
https://jp.techcrunch.com/2019/05/08/2019-05-07-kotlin-is-now-googles-preferred-language-for-android-app-development/

Kotlinの方が開発工数を抑えられ、Android Stuidoもすでに対応しているとのこと。
ということで、こ、こと、こつ・・・、なんて読むんだ・・・。

コトリンだそうです。Kotlinにチャレンジ!

開発環境

  • Windows 10 Home 64bit(バージョン1903)

初めてのKotlinインストール!は要らない!?

最新のAndroid StudioにはすでにKotlinの環境が入っているらしい。(2020/7/13現在。Version4.0)
ということで、Android Studioをインストールします。

  1. まずはhttps://developer.android.com/studio にアクセスし、実行ファイルをダウンロードします。
    image.png
    勝手に自分の環境(Windows 64bit)と認識してくれるの地味にありがたい。

  2. ダウンロードされたファイルを実行します。
    image.png

  3. [Next]
    image.png

  4. [Next]
    image.png

  5. [Next]
    image.png

  6. [Install]!
    image.png

  7. また[Next]
    image.png

8.[Finish]!!!
image.png

9.おそらくPC移行時などは設定を引き継げるのでしょう。今回は初インストールなので[Do not import settings]で[OK]
image.png

  1. Android Studioの利用状況をGoogleに送ってもよいかの確認です。素晴らしいツールを無償で提供してくれるGoogle先生のために、ここは[Send usage statistics to Google]にしましょう。
    image.png

  2. また[Next]。でもワクワク。
    image.png

  3. とりあえず[Standard]で。
    image.png

  4. ダークモードも選べます。私はスマホはすべてダークにしてるのですが、PCのダークはちょっと見づらい。個人差でしょうが、私はLightにします。
    image.png

  5. [Finish]!!!
    image.png

  6. 私の環境だと3分弱でインストールが完了しました。(途中コマンドプロンプトの実行の許可が出るので、OKをクリックします。)
    image.png

  7. これでAndroidアプリを開発する環境が整いました(おそらく)。
    image.png

実際の開発はまた次回投稿します。
ではでは。

  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

GooglePlayリジェクト(Violation of Families Policy Requirements)がでたときは、ターゲット ユーザーおよびコンテンツを修正せよ!

これを読んで解決すること

Google Play Consoleにて下記のエラーが発生した時に、解決することが可能です。

エラー内容

Issue: Violation of Families Policy Requirements
Apps that contain elements that appeal to children must comply with all Families Policy Requirements. We found the following issue(s) with your app:
Version(s)
APK:1
We don't allow apps with misleading, irrelevant, excessive, or inappropriate metadata, including but not limited to the app's description, developer name, title, icon, screenshots, and promotional images. Your app must include metadata text and images that accurately reflect the app experience.
For example, the app launcher icon does not accurately reflect the app experience.
For more details, please read through the Metadata policy.
:--
Apps that contain elements that appeal to children must comply with all Families Policy Requirements. We found the following issue(s) with your app:

実際にGoogleから送られてきたメールをスクリーンショットしたもの

図1.png

解決方法(2ステップ)

(1)対象年齢を変更する
Google Play Consoleの左タブ
ストアでの表示>アプリのコンテンツ>ターゲットユーザーおよびコンテンツ>対象年齢
を編集
(私の場合は、13-15歳のチェックマークをはずせばOKがでました。結果16歳以上のアプリになってしまいました。)

図dさd1.png

(2)アプリを再送信する
Google Play Consoleの左タブ
ストアでの表示>ストアの掲載情報
内のどこかの文言を編集すると
したの画像右下のあるボタン"アプリを再送信"が押せるようになります。
※したの画像は”アップデートを送信”ボタンになっています。これは公開になったあとにスクリーンショットをとったのでこうなりました。リジェクト直後は”アプリを再送信”というボタンになっています。
この”アプリを再送信”ボタンを押せばリジェクト完了です。
34242図1.png

参考にした記事

stackoverflow.com
https://stackoverflow.com/questions/57027059/how-to-fix-issue-violation-of-families-policy-requirements

リジェクトから公開までにかかった時間

→6時間程度?
深夜2時半にリジェクトの通知がGoogleからメールできました。
参考記事をみながら解決案に辿りつき”アプリの再送信”ボタンをおしたのが深夜3時半。
その後、アプリの公開が分かったのが朝の11時ごろ。

最初の審査からリジェクトまでにかかった時間

最初の審査:7/8(水)夜
リジェクトの通知:7/13(日)AM2:30ごろ

この解決方法のデメリット

実際に、試していないので定かではないですが
どこかの記事かなにかに書いてあったので記載しておきます。
アプリの対象年齢を引き上げると、対象年齢未満のスマートフォンではそのアプリを遊べなくなるそうです。
つまり、Google Storeで表示されないでそうです。(定かではない)。

  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む