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

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

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

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

Android Studio

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

Q&A

1回答

7333閲覧

Android Studioを用いてスマホロックアプリを開発しています

kuriwaki

総合スコア16

Android

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

Android Studio

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

0グッド

0クリップ

投稿2018/01/08 08:18

###前提・実現したいこと
1日のうちに一定時間スマホを利用するとスマホの操作を受け付けないようにするアプリを開発中です。
ロック条件は違いますが理想としてはGooglePlayにあるスマホ依存タイマーだったりDetoxスマホのようにロック出来たらよいと考えています。
アプリ内のみのHOMEボタンの無効化とほかの画面に遷移させないようにするための良い方法は何かないでしょうか。

###発生している問題・エラーメッセージ
現在2つのアプリを開発し一つはスマホの電源がついている間のみカウントダウンが進み0になるともう一つのアプリを起動するというもので、
もう一つはランチャーアプリで疑似的ながらHOMEボタンを無効化し戻るボタンも無効にすることでスマホをロックするというものです。
ですがこの方法だど解除方法がユーザが設定から行わないといけないし通知などから他の画面に飛ばれてしまうため完全なロックとは程遠い状況です。

エラーメッセージはありません。

###該当のソースコード

package com.example.cs1.mymukou3; import android.content.Context; import android.content.SharedPreferences; import android.os.Bundle; import android.provider.Settings; import android.support.v7.app.AppCompatActivity; import android.view.KeyEvent; import android.view.View; import android.widget.Button; import android.widget.TextView; import android.widget.Toast; import static android.view.WindowManager.LayoutParams.TYPE_KEYGUARD_DIALOG; import android.app.Activity; import android.app.KeyguardManager; import android.content.Intent; import android.os.Bundle; import android.support.v7.app.AppCompatActivity; import android.util.Log; import android.view.KeyEvent; import android.view.WindowManager; import android.widget.Toast; import org.w3c.dom.Text; import static android.view.WindowManager.LayoutParams.TYPE_KEYGUARD_DIALOG; import static com.example.cs1.mymukou3.R.layout.activity_schedule_edit; import static java.util.logging.Logger.global; public class MainActivity extends AppCompatActivity implements View.OnClickListener{ public int global; public SharedPreferences dataStore; public TextView textRead; public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); findViewById(R.id.button).setOnClickListener(this); //リスナーをボタンに登録 } protected void onCreate() { // super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); findViewById(R.id.button).setOnClickListener(this); //リスナーをボタンに登録 } //戻る無効処理 public boolean dispatchKeyEvent(KeyEvent event) { // TODO Auto-generated method stub if (event.getAction() == KeyEvent.ACTION_DOWN) { if (event.getKeyCode() == KeyEvent.KEYCODE_BACK) {// BACKキー return true; } } return super.dispatchKeyEvent(event); } //設定とぶボタン public void onClickButton(View view){ Intent intent = new Intent("android.settings.SETTINGS"); intent.setAction(android.provider.Settings.ACTION_SETTINGS); startActivity(intent); } }

###試したこと
上記記載

###補足情報(言語/FW/ツール等のバージョンなど)
開発環境Android studio
開発者初心者のためソースコードやコメントなどを丁寧に説明してくれると助かります。

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

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

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

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

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

guest

回答1

0

強制表示の基盤となるプログラムはこのページにあります:
https://techbooster.org/android/ui/13182/

ここで肝心なのは、レイヤーオプションをどうするかです。
今回は画面の操作を受け付けないロックアプリということで、最優先されるレイヤーがいいと思います。

こちらにWindowManagerのレイヤーオプション(どれだけ強制表示させるか)について詳しく載っています。
https://developer.android.com/reference/android/view/WindowManager.LayoutParams.html

結論を言うと、画面ロックアプリはAPI26未満(Android8.0未満)の端末は「TYPE_SYSTEM_ERROR」、API26以上の端末は「TYPE_APPLICATION_OVERLAY」を使うとよさそうです。

※API26以上~は「TYPE_SYSTEM_ERROR」が使用できなくなっています。なのでAPIによって動作を振り分ける必要があります。
※API26以上~はステータスバーの制御ができません。
(「TYPE_SYSTEM_ERROR」は画面全体が操作できなくなりますが、API26以上~はステータスバーだけは反応する仕様となっています。)

よってこのようなプログラムを組むといいでしょう。

JAVA

1if(Build.VERSION.SDK_INT < 26){ 2 //APIレベル26未満の機種の場合 3 //ここにレイヤーオプション「TYPE_SYSTEM_ERROR」のプログラムを書く 4}else{ 5 //APIレベル26以上の機種の場合 6 //ここにレイヤーオプション「TYPE_APPLICATION_OVERLAY」のプログラムを書く 7}

投稿2019/08/30 04:21

ETFS_Research

総合スコア66

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

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

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

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

ただいまの回答率
85.50%

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

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

質問する

関連した質問