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

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

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

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

Android

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

Q&A

解決済

2回答

1455閲覧

Android位置送信アプリ

arutaka

総合スコア29

Java

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

Android

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

0グッド

0クリップ

投稿2016/07/19 02:10

編集2016/07/19 02:37

GPSを使った位置の特定Androidアプリを作っております。

登校経路から、指定されたメートル数外れるとSMSを発信します。

同じくこのアプリが親が持っているスマホから位置を送信しなさいという
SMSメールを受け取るとGPSで位置を割り出し、SMSで現在地を送信するというものです。

親が持っているもう片方のスマホで、
このSMSを受け取ると地図に表示するというものです。

ただ、登校経路から外れるのを、何秒おきかにチェックしないとけないので
スレッドのタイマーを使ってますが…

タイマースレッドが、上手く作動しないのと
トップの画面が固まります。どうしてか教えて頂くと助かります。

タイマーを3つほど同時に作動させて、違うリズムで処理をしますので
重ならないようにしています。

しかし、アプリの動作が止まって固まってしまいます。
減少としては、1秒ぐらいの間隔で、start1が作動しているようです。

ソース以下…

start1(); start2(); public void start1() { timer.schedule(new TimerTask() { public void run() { play(); timer.cancel(); } private void play() { //ToDo

//位置を割り出し、経路から外れていたらSMSで送信するクラス
}
}, 6 * 1000);
}

public void start2() { timer.schedule(new TimerTask() { public void run() { play(); timer.cancel(); } private void play() { //ToDo

//SMSで位置確認メールなどが届いていたら、位置を割り出し、SMSで返答するクラス
}
}, 7 * 1000);
}

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

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

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

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

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

yona

2016/07/19 02:26

コードを省略しすぎです、なにも回答につながりません。具体的な処理がわからないと回答できません。 また、コード用の記述に修正してください。
guest

回答2

0

yoya さんのコメントの通り、何がされたいか分からないですが、見えるコードには、以下の問題があります。

  • ひとつの timer インスタンスでは、ひとつのタイミングしか管理できない(6秒毎のタイマーと7秒毎のタイマーはひとつの timer インスタンスでは扱えない)
  • timer.cancel() を呼び出したら、そのインスタンスはもう利用できない
  • TimerTask の中で play() したあと、timer.cancel() を呼んだら、その時点でタイマーは終了するので、定期的な実行にはならない

タイマーを使った処理は、以下が詳しいので、こちらを理解されるとよいかと思います。

投稿2016/07/19 05:26

amay077

総合スコア1075

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

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

0

ベストアンサー

Threadに関してそれほど詳しいわけではないですが、Androidでは、
JavaのThreadクラスは使わないほうが良いようです。

Handlerとか、AsyncTaskと呼ばれるものがあるので、そちらで検討したほうがいいかも知れません。
細かいコードは私にはとても書けないのでそれぞれ検索してみてください。

android UIスレッドで調べるといろいろわかると思います。

投稿2016/07/19 03:02

Mr_Roboto

総合スコア2208

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

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

arutaka

2016/07/19 05:22

ありがとうございます。 そもそもスレッドクラスは使かわないほうがいいんですね… 調べてみます。ありがとうございます。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.50%

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

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

質問する

関連した質問