androidアプリ+bluetooth通信についての質問
- 評価
- クリップ 1
- VIEW 3,023
前提・実現したいこと
androidアプリでBluetoothにデータを書き込み、Bluetoothからデータを受信してアプリにデータを表示したいです。
サンプルソースを選択してデバックすると動作するのですが、新規のアプリにコピー&ペーストするとエラーが出ているためBluetoothデバイスの検索がうまくいきません。強制終了してしまいます。
ソース自体はandroidアプリ開発のセミナで使ったサンプルをもとにしています。
java言語、androidアプリに関しては初めて2ヶ月です。
私以外わかる人は社内にいません。
困っています。わかるかた教えていただけないでしょうか。
発生している問題・エラーメッセージ
ソースコードとバイトコードが合いませんというエラーとandroid studioのSDKで自動生成されるソースが赤くなってしまいます。
該当のソースコード
試したこと
1.最新のJDKをインストール。(jdk1.8.0_121)
2.環境変数の設定を修正。
JAVA_HOMEの設定がユーザー環境設定(画面上側)ではなく、システム環境設定(画面下側)に 入っていた。
3.Android Studioを再インストール(Version 2.3)
・SDKのインストール先を変更。("Users"のディレクトリを"ユーザー"と表示している場所があ るので、日本語要素を排除してみた)
C:\Users\Gijuta\AppData\Local\Android\sdk
↓
C:\Android\sdk
・インストール後のアップデートを行わない。(アップデートするか聞かれなかった。今後も注 意)
4.SDKマネージャーの設定
●SDK Platformsタブ
・Android 6.0(Marshmallow)に追加チェック
●SDK Toolsタブ
・Google USB Driverに追加チェック
・Support Repositoryの下記項目に追加チェック
・ConstraintLayout for Android
・Solver for ConstraintLayout
5.プロジェクト起動時に出てくるエラーは、
エラー文の下の青文字をクリックするとAndroid Studioが自動で対応してくれるので任せる。
6.スマートデバイスをPCに接続した際に表示される
「ファイル転送~~」の問いにはキャンセルする。
7.Clean Projectの実施(Buildメニュー内にあり)
8.Rebuild Projectの実施(Buildメニュー内にあり)
9.既にデバイスにインストールされているアプリをアンインストールする。
↓下記エラーに対する処置として毎回アプリを削除しています。
Error while executing: am startservice com.tool.toho.gijutu3.toho_ble_tool/com.android.tools.fd.runtime.InstantRunService
Starting service: Intent { act=android.intent.action.MAIN cat=[android.intent.category.LAUNCHER] cmp=com.tool.toho.gijutu3.toho_ble_tool/com.android.tools.fd.runtime.InstantRunService }
Error: Not found; no service started.
補足情報(言語/FW/ツール等のバージョンなど)
SDKバージョンはmini=23で25.0.3でビルドしています。
ZenPad8.0 androidバージョン6.0 bletoothバージョン23.51の実機をしようしてデバックしています。
追記項目
03-17 11:04:56.574 882-882/? E/WifiTrafficPoller: TRAFFIC_STATS_POLL true Token 249 num clients 9
03-17 11:04:56.575 882-882/? E/WifiTrafficPoller: packet count Tx=307899 Rx=2870259
03-17 11:04:56.575 882-882/? E/WifiTrafficPoller: notifying of data activity 1
上記のエラーログが存在します。それ以外は特に出ていません。
-
気になる質問をクリップする
クリップした質問は、後からいつでもマイページで確認できます。
またクリップした質問に回答があった際、通知やメールを受け取ることができます。
クリップを取り消します
-
良い質問の評価を上げる
以下のような質問は評価を上げましょう
- 質問内容が明確
- 自分も答えを知りたい
- 質問者以外のユーザにも役立つ
評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。
質問の評価を上げたことを取り消します
-
評価を下げられる数の上限に達しました
評価を下げることができません
- 1日5回まで評価を下げられます
- 1日に1ユーザに対して2回まで評価を下げられます
質問の評価を下げる
teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。
- プログラミングに関係のない質問
- やってほしいことだけを記載した丸投げの質問
- 問題・課題が含まれていない質問
- 意図的に内容が抹消された質問
- 過去に投稿した質問と同じ内容の質問
- 広告と受け取られるような投稿
評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。
質問の評価を下げたことを取り消します
この機能は開放されていません
評価を下げる条件を満たしてません
質問の評価を下げる機能の利用条件
この機能を利用するためには、以下の事項を行う必要があります。
- 質問回答など一定の行動
-
メールアドレスの認証
メールアドレスの認証
-
質問評価に関するヘルプページの閲覧
質問評価に関するヘルプページの閲覧
check解決した方法
0
Bluetoothのパーミッションの許可をするとともにandroid 6.0から位置情報のパーミッションの権限を有効にすること端末の位置情報設定をONにすることが必要になったため下記コードを入れることによりデバイス検索が可能になりました。
// フィールド定義
private static final int REQUEST_PERMISSIONS = 1;
private static final int SALVER_MARSHMALLOW = 23;
@Override
public void onResume(){
super.onResume();
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
this.requestBlePermission();
}
}
@TargetApi(SALVER_MARSHMALLOW)
private void requestBlePermission() {
// 権限が許可されていない場合はリクエスト
if(checkSelfPermission(android.Manifest.permission.ACCESS_COARSE_LOCATION) != PackageManager.PERMISSION_GRANTED){
requestPermissions(new String[]{android.Manifest.permission.ACCESS_COARSE_LOCATION},REQUEST_PERMISSIONS);
}
}
@Override
public void onRequestPermissionsResult(int requestCode, String[]permissions,int[] grantResults){
// 権限リクエストの結果を取得する
if(requestCode == REQUEST_PERMISSIONS) {
if (grantResults[0] == PackageManager.PERMISSION_GRANTED) {
Toast.makeText(this, "位置情報の権限を許可しました", Toast.LENGTH_SHORT).show();
} else {
Toast.makeText(this, "位置情報の権限が拒否されました", Toast.LENGTH_SHORT).show();
}
}
else{
super.onRequestPermissionsResult(requestCode,permissions,grantResults);
}
}
投稿
-
回答の評価を上げる
以下のような回答は評価を上げましょう
- 正しい回答
- わかりやすい回答
- ためになる回答
評価が高い回答ほどページの上位に表示されます。
-
回答の評価を下げる
下記のような回答は推奨されていません。
- 間違っている回答
- 質問の回答になっていない投稿
- スパムや攻撃的な表現を用いた投稿
評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。
0
考えられることは下記の通りです。
・セミナー時の開発環境と現在の開発環境を比べて違いを探す。
・Android端末の設定からアプリ設定を開き、Bluetoothの権限が有効になっているかを確認する。
・セミナーの主催者に確認する。
また、有料セミナーの場合はコードを公開することを禁じている可能性があるので注意が必要です。
投稿
-
回答の評価を上げる
以下のような回答は評価を上げましょう
- 正しい回答
- わかりやすい回答
- ためになる回答
評価が高い回答ほどページの上位に表示されます。
-
回答の評価を下げる
下記のような回答は推奨されていません。
- 間違っている回答
- 質問の回答になっていない投稿
- スパムや攻撃的な表現を用いた投稿
評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。
15分調べてもわからないことは、teratailで質問しよう!
- ただいまの回答率 88.09%
- 質問をまとめることで、思考を整理して素早く解決
- テンプレート機能で、簡単に質問をまとめられる
質問への追記・修正、ベストアンサー選択の依頼
yona
2017/03/17 10:23
エラーログを追記してください。
GTOHOElectronic
2017/03/17 11:13
出ているLogエラーを追記しました。
yona
2017/03/17 11:17
強制終了したときのエラーログはこれだけですか?
GTOHOElectronic
2017/03/17 11:27
はい。特に上記の記載以外のログエラーは発生していません。
GTOHOElectronic
2017/03/17 12:02
端末のBluetoothは有効にしています。コードでのBluetooth権限はManifest.xmlでパーミッションを許可するだけですよね。