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

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

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

Bluetoothとは短距離の間でデータを交換するための無線通信規格である。固定・モバイル両方のデバイスから、短波の電波送信を行うことで、高いセキュリティをもつパーソナルエリアネットワーク(PAN)を構築する。

Android

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

Q&A

解決済

2回答

4014閲覧

androidアプリ+bluetooth通信についての質問

GTOHOElectronic

総合スコア6

Bluetooth

Bluetoothとは短距離の間でデータを交換するための無線通信規格である。固定・モバイル両方のデバイスから、短波の電波送信を行うことで、高いセキュリティをもつパーソナルエリアネットワーク(PAN)を構築する。

Android

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

0グッド

1クリップ

投稿2017/03/17 01:00

編集2017/03/17 02:51

###前提・実現したいこと
androidアプリでBluetoothにデータを書き込み、Bluetoothからデータを受信してアプリにデータを表示したいです。

サンプルソースを選択してデバックすると動作するのですが、新規のアプリにコピー&ペーストするとエラーが出ているためBluetoothデバイスの検索がうまくいきません。強制終了してしまいます。

ソース自体はandroidアプリ開発のセミナで使ったサンプルをもとにしています。
java言語、androidアプリに関しては初めて2ヶ月です。
私以外わかる人は社内にいません。

困っています。わかるかた教えていただけないでしょうか。

###発生している問題・エラーメッセージ
ソースコードとバイトコードが合いませんというエラーとandroid studioのSDKで自動生成されるソースが赤くなってしまいます。

###該当のソースコード
エラーが発生した場所
イメージ説明
イメージ説明

コピーしたソースコード
イメージ説明
イメージ説明

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
上記のエラーログが存在します。それ以外は特に出ていません。

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

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

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

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

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

yona

2017/03/17 01:23

エラーログを追記してください。
GTOHOElectronic

2017/03/17 02:13

出ているLogエラーを追記しました。
yona

2017/03/17 02:17

強制終了したときのエラーログはこれだけですか?
GTOHOElectronic

2017/03/17 02:27

はい。特に上記の記載以外のログエラーは発生していません。
GTOHOElectronic

2017/03/17 03:02

端末のBluetoothは有効にしています。コードでのBluetooth権限はManifest.xmlでパーミッションを許可するだけですよね。
guest

回答2

0

自己解決

Bluetoothのパーミッションの許可をするとともにandroid 6.0から位置情報のパーミッションの権限を有効にすること端末の位置情報設定をONにすることが必要になったため下記コードを入れることによりデバイス検索が可能になりました。

java

1 // フィールド定義 2 private static final int REQUEST_PERMISSIONS = 1; 3 private static final int SALVER_MARSHMALLOW = 23; 4 5 @Override 6 public void onResume(){ 7 super.onResume(); 8 if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) { 9 this.requestBlePermission(); 10 } 11 } 12 13 @TargetApi(SALVER_MARSHMALLOW) 14 private void requestBlePermission() { 15 // 権限が許可されていない場合はリクエスト 16 if(checkSelfPermission(android.Manifest.permission.ACCESS_COARSE_LOCATION) != PackageManager.PERMISSION_GRANTED){ 17 requestPermissions(new String[]{android.Manifest.permission.ACCESS_COARSE_LOCATION},REQUEST_PERMISSIONS); 18 } 19 } 20 21 @Override 22 public void onRequestPermissionsResult(int requestCode, String[]permissions,int[] grantResults){ 23 // 権限リクエストの結果を取得する 24 if(requestCode == REQUEST_PERMISSIONS) { 25 if (grantResults[0] == PackageManager.PERMISSION_GRANTED) { 26 Toast.makeText(this, "位置情報の権限を許可しました", Toast.LENGTH_SHORT).show(); 27 } else { 28 Toast.makeText(this, "位置情報の権限が拒否されました", Toast.LENGTH_SHORT).show(); 29 30 } 31 } 32 else{ 33 super.onRequestPermissionsResult(requestCode,permissions,grantResults); 34 } 35 } 36

投稿2017/03/21 04:06

GTOHOElectronic

総合スコア6

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

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

0

考えられることは下記の通りです。
・セミナー時の開発環境と現在の開発環境を比べて違いを探す。
・Android端末の設定からアプリ設定を開き、Bluetoothの権限が有効になっているかを確認する。
・セミナーの主催者に確認する。

また、有料セミナーの場合はコードを公開することを禁じている可能性があるので注意が必要です。

投稿2017/03/17 02:38

yona

総合スコア18155

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

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

yona

2017/03/17 03:09

Android 6ではマニフェストにパーミッションを書いただけではダメです。 Android端末のアプリ設定から許可を与えるか、コード内でユーザーに許可を求める処理を実装してください。 また、回答に対するコメントは回答のコメント欄に記載してください。
GTOHOElectronic

2017/03/17 03:56

すみません。この質問で初めて利用するのでサイトの使い方がわからなかったので、ご指摘ありがとうございます。 「Android端末のアプリ設定から許可を与えるか、コード内でユーザーに許可を求める処理を実装してください。」というのは回答に対してコードは上記4枚目の画像のソースコードでいいですよね。
yona

2017/03/17 04:01

ありますね。 Bluetoothの権限を与えるかどうかのダイアログは出ますか?
GTOHOElectronic

2017/03/17 04:13 編集

それは端末のBluetoothがONでもOFFの設定になっていても出るのでしょうか。
yona

2017/03/17 04:51

BluetoothのオンオフとBluetooth権限のオンオフは関係ありません。ダイアログがでるかどうかはプログラム次第なので、私に聞かれてもわかりません。 とにかく、Android端末のアプリ設定からパーミッションを与えてください。その結果をコメントしてください。
GTOHOElectronic

2017/03/17 05:45

Bluetoothのオンオフ確認と同じに作っているのでオフでない限りダイヤログは表示しません。
yona

2017/03/17 05:58

そのダイアログはBluetoothのオンオフを切り替えるだけですよね? Bluetoothの権限についてのダイアログは出ましたか? 私のコメントに対する作業を行ってからコメントしてください。時間のむだです。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問