Androidのメモとか

ポキオの日記です。今日も遅延してない。

Rakuten miniをキッズケータイにしたかったのでホームアプリを作ってみた

潔くキッズケータイを買えばいいのに。

ポキオ Rakuten mini キッズケータイ

娘に持たせる最初のスマホは?

スマホなんて家に何台も転がってるこのご時世、わざわざキッズケータイを買わなくてもなんとかなるのでは?と思ってしまった父です。

ただ、フツーのスマホをそのまま子供に持たせてしまうと、いろんなアプリにアクセスができてしまい、色々と良くないことが起こりそうで不安な訳です。

ポキオ Rakuten mini キッズケータイ

そこで、今回は家に転がってたRakuten mini向けにホームアプリ(いわゆるランチャーアプリ)を作成して、必要な機能だけをかんたんに実行できるようにしてみました。

作ったもの

こんな感じのアプリです。

ポキオ Rakuten mini キッズケータイ

ホームアプリとして実装しているため、ホームボタンを押すたびにこの画面が表示される感じになっています。ポイントは…

  • 画面要素は時計とボタン4つだけ
  • ボタンを押すと、父・母に電話、カメラの起動、ファイラーアプリ(Files)の起動が行える
  • ボタンは誤動作防止のため長押ししないと動作しない
  • それ以外のアプリや画面は(なるべく)起動できないようになっている

こんな感じです。

実際のコード

Githubで公開しています。

github.com

ポイントは…

  • Manifestで android:screenOrientation="portrait" と宣言して画面は縦固定とする
  • <category android:name="android.intent.category.LAUNCHER" /> と記載することでホームアプリとして動作するようにする
<activity
    android:screenOrientation="portrait"
    android:name=".MainActivity"
    android:exported="true">
    <intent-filter>
        <action android:name="android.intent.action.MAIN" />
        <category android:name="android.intent.category.LAUNCHER" />
        <category android:name="android.intent.category.HOME" />
        <category android:name="android.intent.category.DEFAULT" />
    </intent-filter>
</activity>

そして、メインのロジックとしては

  • setOnClickListener() ではなく setOnLongClickListener() を使って長押しイベントを検知
  • Intent.ACTION_CALL で直接電話発信を実施(要 android.permission.CALL_PHONE 権限、しかもRunTimePermissionが必要)
father.setOnLongClickListener(View.OnLongClickListener {
    val uri = Uri.parse("tel:08000000000")
    val intent = Intent(Intent.ACTION_CALL, uri)
    startActivity(intent)
    return@OnLongClickListener true
})
  • 起動するアプリはRakuten miniにプリインされているカメラアプリとFilesアプリを直打ち
val intent = packageManager.getLaunchIntentForPackage("com.myos.camera")
startActivity(intent)
val intent = packageManager.getLaunchIntentForPackage("com.google.android.apps.nbu.files")
startActivity(intent)

こんな感じです。かなりRakuten miniに全振りしてるので、決め打ちで値を入れているところも多いですが、他の端末でも似たようなことができるはずです。

「Androidのメモとか」は、Amazon.co.jpを宣伝しリンクすることによってサイトが紹介料を獲得できる手段を提供することを目的に設定されたアフィリエイト宣伝プログラムである、Amazonアソシエイト・プログラムの参加者です。

このブログは個人的なメモ書きであったり、考えを書く場所であります。執筆者の所属する団体や企業のコメントや意向とは無関係であります。また、このブログは必ずしも正しいことが書かれているとは限らず、誤字脱字や意図せず誤った情報を載せる場合がありえます。それが原因で読者が不利益を被ったとしても、執筆者はいかなる責任も負いません。ありがとうございます。