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

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

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

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

Android

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

Android Studio

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

Q&A

0回答

135閲覧

アラームアプリ 計算式orシェイク

kimukou1205

総合スコア13

Java

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

Android

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

Android Studio

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

0グッド

0クリップ

投稿2019/01/25 06:42

やりたいこと

私は、二度寝しないめざましアラームを作っており、スムーズ機能の代わりにランダムの計算式やシェイクでアラーム音を解除するアプリケーションです。MainActivityの画面で時間を設定して、その設定した時間がきたら、画面遷移しPlaySoundActivityに移動して計算式を表示し、正しい計算式を入力したらアラーム音を解除して元のMainActivity画面に戻るつもりです。

問題

計算式は、問題なく動作できたがシェイク機能のコードをPlaySoundActivityに書いたら、MainActivityから画面遷移する際にアプリが落ちてしまいます。原因を特定できる実力がないため、力を貸してください。
GitHubに全体コードがあるので見てください。
https://github.com/kimukou1205/Shake-Alarm_check

[PlaySoundActivity]      ~略~ @Override public void onStop() { super.onStop(); //Check device supported Accelerometer senssor or not if (AccelerometerManager.isListening()) { //Start Accelerometer Listening AccelerometerManager.stopListening(); //Toast.makeText(this, "onStop Accelerometer Stopped", Toast.LENGTH_SHORT).show(); } } @Override public boolean dispatchKeyEvent(KeyEvent event) { if (event.getAction() == KeyEvent.ACTION_DOWN) { switch (event.getKeyCode()) { case KeyEvent.KEYCODE_BACK: // ダイアログ表示など特定の処理を行いたい場合はここに記述 // 親クラスのdispatchKeyEvent()を呼び出さずにtrueを返す return true; } } return super.dispatchKeyEvent(event); } @Override protected void onResume() { super.onResume(); if (AccelerometerManager.isSupported(this)) { AccelerometerManager.startListening(this); } } @Override public void onAccelerationChanged(float x, float y, float z) { } @Override public void onShake(float force) { //stopAlarm(); shakeCount++; //countTextView = (TextView) findViewById(R.id.txtShakeCount); Toast.makeText(this, shakeCount.toString() + "回", Toast.LENGTH_SHORT).show(); if (shakeCount >= 10) { //------------------ this.context = this; final Intent myIntent = new Intent(this.context, AlarmReceiver.class); int min = 1; int max = 9; Random r = new Random(); int random_number = r.nextInt(max - min + 1) + min; Log.e("random number is ", String.valueOf(random_number)); myIntent.putExtra("extra", "no"); sendBroadcast(myIntent); alarmManager.cancel(pending_intent); setAlarmText("アラーム終了しました"); //setAlarmText("You clicked a " + " canceled"); shakeCount = 0; } } @Override protected void onCreate(final Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_play_sound); getWindow().addFlags(WindowManager.LayoutParams.FLAG_DISMISS_KEYGUARD | WindowManager.LayoutParams.FLAG_SHOW_WHEN_LOCKED | WindowManager.LayoutParams.FLAG_TURN_SCREEN_ON | WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON); this.context = this; final Intent myIntent = new Intent(this.context, AlarmReceiver.class); shakeCount = 0; alarmTextView = (TextView) findViewById(R.id.alarmText); SharedPreferences data = getSharedPreferences("DataSave", Context.MODE_PRIVATE); final int Level = data.getInt("LevelSave", 1); // 第2引数は値がなかったときのデフォルト //ShakeGestureManager mGestureManager = new ShakeGestureManager(this, mListener); //mGestureManager.startSensing(); startService(new Intent(this, PlaySoundService.class)); Random rand = new Random(); randnum = rand.nextInt(10); // randnum = Level; textView3 = (TextView) findViewById(R.id.textView3); textView = (TextView) findViewById(R.id.textView2); editText = (EditText) findViewById(R.id.editText); if (Level == 1) { // 低の問題 if (randnum == 0) { textView.setText("11×11");//121 } else if (randnum == 1) { textView.setText("1+2+3+4+5+6+7+8+9");//45 } else if (randnum == 2) { textView.setText("33×33");//1089 } else if (randnum == 3) { textView.setText("1+3+9+27+81+243");//364 ~略~ } if (Level == 2) { // 中の問題 if (randnum == 0) { textView.setText("111×111");//12321 } else if (randnum == 1) { textView.setText("(100-13)×(100+13)");//9831 } else if (randnum == 2) { textView.setText("2×(-5)");//-10 } else if (randnum == 3) { textView.setText("(-2)×(-5)");//10 ~略~ }    ~略~ } final Intent intent = new Intent(this, MainActivity.class); if (count == 10) { stopsound(); } stop = (Button) findViewById(R.id.stop); stop.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { if (Level == 1) { // 低の問題 if (randnum == 0 && editText.getText().toString().equals("121")) { stopsound(); textView3.setText("正解!!"); finish(); } else if (randnum == 1 && editText.getText().toString().equals("45")) { stopsound(); textView3.setText("正解!!"); finish(); } else if (randnum == 2 && editText.getText().toString().equals("1089")) { stopsound(); textView3.setText("正解!!"); finish(); } ~略~ } else if (editText.getText().toString().equals("")) { Toast.makeText(PlaySoundActivity.this, "数字を入力してください", Toast.LENGTH_LONG).show(); } } if (Level == 2) { // 中の問題 if (randnum == 0 && editText.getText().toString().equals("12321")) { stopsound(); textView3.setText("正解!!"); finish(); } else if (randnum == 1 && editText.getText().toString().equals("9831")) { stopsound(); textView3.setText("正解!!"); finish(); } else if (randnum == 2 && editText.getText().toString().equals("-10")) { stopsound(); textView3.setText("正解!!"); finish(); } else if (randnum == 3 && editText.getText().toString().equals("10")) { stopsound(); textView3.setText("正解!!"); finish(); ~略~ } else if (editText.getText().toString().equals("")) { Toast.makeText(PlaySoundActivity.this, "数字を入力してください", Toast.LENGTH_LONG).show(); } } if (Level == 3) { // 高の問題 if (randnum == 0 && editText.getText().toString().equals("0")) { stopsound(); textView3.setText("正解!!"); finish(); } else if (randnum == 1 && editText.getText().toString().equals("1")) { stopsound(); textView3.setText("正解!!"); finish(); }          ~略~ } else if (editText.getText().toString().equals("")) { Toast.makeText(PlaySoundActivity.this, "数字を入力してください", Toast.LENGTH_LONG).show(); } } } }); Button stop_alarm = (Button) findViewById(R.id.stop_alarm); stop_alarm.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { int min = 1; int max = 9; Random r = new Random(); int random_number = r.nextInt(max - min + 1) + min; Log.e("random number is ", String.valueOf(random_number)); myIntent.putExtra("extra", "no"); sendBroadcast(myIntent); alarmManager.cancel(pending_intent); setAlarmText("アラーム終了"); //setAlarmText("You clicked a " + " canceled"); } }); } public void stopsound() { stopService(new Intent(PlaySoundActivity.this, PlaySoundService.class)); PreferenceUtil pref = new PreferenceUtil(PlaySoundActivity.this); pref.delete(com.example.axu1.richarddawkinsalarmclock.MainActivity.ALARM_TIME); } public void setAlarmText(String alarmText) { alarmTextView.setText(alarmText); } private void stopAlarm() { } /*@Override public void onStart() { super.onStart(); inst = this; }*/ @Override public void onDestroy() { super.onDestroy(); if (AccelerometerManager.isListening()) { AccelerometerManager.stopListening(); //Toast.makeText(this, "onDestroy Accelerometer Stopped", Toast.LENGTH_SHORT).show(); } Log.e("MyActivity", "on Destroy"); } }

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

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

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

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

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

guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだ回答がついていません

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

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

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問