Android

<declare-styleable>の中の<attr>のformat

<attr>のformatで変数の型を指定できる。 いろいろあるけど、文字列、整数値、に加えて色を定義していこう。 styles.xmlで、customColorのformatは"color"なので、16進数で#ffffff00と書く。 黄色である。 activity_main.xmlで、TextViewのbackgroundにcustomColor</attr>…

<color>

以前もやったけど、<color>で色を定義できる。スタイルとテーマ | Android デベロッパー | Android Developersこれも、colors.xmlを用意しなくても、styles.xmlで、red, green, blueを定義して、値はそれぞれの16進数値をセット。 activity_main.xmlで、background</color>…

<declare-styleable>の中の<attr>

<attr>を使って、複数の変数を定義していく。 styles.xmlで、文字列customStrと整数値customIntを定義。 customStrの値は"ABCDE" customIntの値は5とする。 問題は整数値を受け入れるViewの属性。 layout_widthとかはdpなのでintegerではなくdimensionだったりする</attr>…

<declare-styleable>

<declare-styleable>の中で<attr>を使って変数を定義してみる。ビュークラスを作成する | Android デベロッパー | Android Developers別にattrs.xmlを追加してカスタムビューとして定義する必要は無い。 styles.xmlで、先頭で、<declare-styleable>で、nameを"CustomTheme"とする。 中に、"customData"と</declare-styleable></attr></declare-styleable>…

<style>の中の<item>のname

さて、Android Studioではどうだろうか。 プロジェクトを作ると、styles.xmlは、既にcolorPrimaryという変数がある。 androidネームスペースは付いてない。 これが通るということはどこかで定義されている。 親のテーマの定義に飛んでみる親のテーマの定義に…

<style>の中の<item>

<style>の中の<item>で、そのスタイルで反映すべきパラメータと値を指定するというのをこれまでやってきた。 styles.xmlで、とすれば、アプリ全体のテーマ"AppTheme"において、android:layout_heightを30dpとするようになる。 これまで、ButtonなどのViewにstyleとして"Cu</item>…

<style>の暗黙的継承

parentを使うのを明示的継承と呼ぶのに対し、<style>のnameを'.'(ドット)で繋げていくのを暗黙的継承と呼ぶ。スタイルとテーマ | Android デベロッパー | Android Developers AndroidのTheme/Styleを理解する - Qiitastyles.xmlで、CustomStyle_Height30dpButton.Wi…

<style>のparent(明示的継承)

parentに、もともと定義されている<style>のnameを指定することで、その<style>を継承できる。(明示的継承とも呼ぶ。)スタイルとテーマ | Android デベロッパー | Android Developers AndroidのTheme/Styleを理解する - Qiitastyles.xmlで、CustomStyle_Height30dpButtonは…

ActivityCompat.shouldShowRequestPermissionRationale

shouldShowRequestPermissionRationaleのリクエスト根拠表示をsupport.v4.app.DialogFragmentでやってみる。ActivityCompat | Android DevelopersActivityCompatにもshouldShowRequestPermissionRationaleはあるので、今回はこちらを使う。 AndroidManifest.…

support.v4.app.DialogFragment

リクエストの根拠(「この権限は〇〇という理由で必要」という説明の表示)なんだけど、Toastだと早く消えちゃうので、ダイアログのほうがいいんじゃないかなあとおもって、せっかくだからsupport.v4.app.DialogFragmentを使うことにした。 ただ、ダイアログの…

Activity.shouldShowRequestPermissionRationale

最初にcheckSelfPermissionで未許可状態で、requestPermissionsで許可ダイアログを表示して、許可しないを選択し、2度目のcheckSelfPermissionの後に、shouldShowRequestPermissionRationaleを呼ぶ書き方になっていることが多いと思う。 Activity.shouldShow…

FragmentActivity.onRequestPermissionsResult

AppCompatActivityの場合は、その基底クラスFragmentActivityのメソッドonRequestPermissionsResultで、パーミッションリクエスト許可ダイアログの許可または拒否が選択された時の処理を書く。FragmentActivity | Android Developers [Android]複数の Runtim…

Activity.onRequestPermissionsResult

Activity.onRequestPermissionsResultで、パーミッションリクエスト許可ダイアログの許可または拒否が選択された時の処理を定義できる。Activity | Android Developersactivity_main.xmlで、また、普通のActivityなのでLinearLayoutとButtonに戻してる。 Mai…

ActivityCompat.requestPermissions

AppCompatActivityの場合は、ActivityCompat.requestPermissionsでリクエストする。ActivityCompat | Android Developersactivity_main.xmlで、ConstraintLayoutにButtonを配置する方法がわかったのでそうした。 (ConstraintLayoutはいずれ扱う。) MainActiv…

Activity.requestPermissions

Activity.requestPermissionsで、パーミッションのリクエスト許可ダイアログが出るので、それで許可すると権限が付与される。Activity | Android DevelopersMainActivity.javaで、mContext.checkSelfPermissionで拒否なら、requestPermissionsでACCESS_FINE_…

Context.checkSelfPermission

順番逆だった・・・。 別にContextでもcheckSelfPermission出来たわ・・・。Context | Android DevelopersMainActivity.javaで、mContextのcheckSelfPermission呼んでるだけで、あとは同じ。 許可されてれば許可されてれば、 許可と出るので変わらない許可と…

ContextCompat.checkSelfPermission

Android 6.0から、Runtime Permissionの仕組みが導入された。アプリの権限をリクエストする | Android デベロッパー | Android DevelopersContextCompat.checkSelfPermissionで、指定の権限が許可されているかをチェックする。ContextCompat | Android Devel…

BluetoothAdapter.isDiscovering

BluetoothAdapter.isDiscoveringで、Bluetooth機器の探索中かどうかをチェック出来る。BluetoothAdapter | Android Developersstrings.xmlで、Button2を追加。 activity_main.xmlで、こちらも"Button2"と表示されるbutton2が追加。 MainActivity.javaで、but…

BluetoothSocket.getInputStream

BluetoothSocket.getInputStreamで、InputStreamオブジェクトを取得して、あとはそれを使って読み込む。BluetoothSocket | Android DevelopersMainActivity.javaで、 package com.bgstation0.android.sample.bluetoothsocket_; import java.io.BufferedReade…

BluetoothSocket.getOutputStream

BluetoothSocket.getOutputStreamでOutputStreamオブジェクトを取得して、OutputStream.writeでデータを書き込む。BluetoothSocket | Android DevelopersMainActivity.javaで、soc.connectで例外が起きなければ、soc.getOutputStreamでoutputStreamを取得し…

BluetoothSocket.connect

BluetoothSocket.connectで、接続する。BluetoothSocket | Android DevelopersMainActivity.javaで、引数とかいらないので、ちょっと接続してみる。 Essential Phoneを押してみるEssential Phoneを押してみる。 socは出来たとしてsocは出来たとして、connect…

BluetoothSocket

作成したBluetoothのクライアントソケットは、BluetoothSocketに格納しておく。BluetoothSocket | Android DevelopersMainActivity.javaで、soc.toStringで、中身を見るだけ。 まあこういうオブジェクトのこういうハッシュコードしかわからないけど。まあこ…

BluetoothDevice.createRfcommSocketToServiceRecord

BluetoothDevice.createRfcommSocketToServiceRecordで、指定されたUUIDのサービス用のRFCOMMソケットを作成する。BluetoothDevice | Android DevelopersBluetoothデバイスを見つけたら、これでソケット作って接続して通信する。 また、構成がちょっと変わる…

BluetoothAdapter.ACTION_DISCOVERY_STARTED

探索を開始した時に、BluetoothAdapter.ACTION_DISCOVERY_STARTEDが呼ばれる。BluetoothAdapter | Android DevelopersCustomReceiver.javaで、ACTION_DISCOVERY_STARTEDの時に、アダプタ側でclearしてる。 1回目1回目。 2回目2回目。 という感じで再度スキャ…

BluetoothAdapter.ACTION_DISCOVERY_FINISHED

探索が終了した時に、BluetoothAdapter.ACTION_DISCOVERY_FINISHEDが呼ばれる。BluetoothAdapter | Android DevelopersACTION_DISCOVERY_FINISHEDしたら、Bluetooth機器リストをリストビューにセットするようにしてみる。 構成を大幅に変える必要がある。 An…

BluetoothDevice.getAddress

BluetoothDevice.getAddressで、Bluetoothアドレスを取得する。BluetoothDevice | Android DevelopersCustomReceiver.javaで、nameに続いて、bluetoothDevice.getAddressで取得したaddressもToast表示する。 nameがこうだとすると、nameがこうだとすると、 a…

BluetoothDevice.getName

BluetoothDevice.getNameで、Bluetooth機器名を取得する。BluetoothDevice | Android DevelopersCustomReceiver.javaで、bluetoothDevice.getNameで取得した名前をToast表示。 nullが多いnullが多い。 1個だけ1個だけ。 DesireだとEssentialとれたDesireだと…

BluetoothDevice

BluetoothDevice.ACTION_FOUNDによって、Bluetooth機器が見つかった時、見つかった機器の情報はBluetoothDeviceオブジェクトで渡される。BluetoothDevice | Android DevelopersCustomReceiver.javaで、BluetoothDevice.ACTION_FOUNDの時、intent.getParcelab…

BluetoothDevice.ACTION_FOUND

Bluetooth機器が見つかった時は、BluetoothDevice.ACTION_FOUNDが来るはずである。BluetoothDevice | Android DevelopersDesireでやってみると、 起動時起動時はこうで、Button1を押すと、 ダイアログが出てきてはいを押すと、 ACTION_DISCOVERY_STARTEDACTI…

BluetoothAdapter.startDiscovery

BluetoothAdapter.startDiscoveryで、Bluetooth機器を探索する。BluetoothAdapter | Android DevelopersAndroidManifest.xmlで、探索する場合は、uses-permissionに"android.permission.BLUETOOTH_ADMIN"が無いと落ちてしまう。 あとは、CustomReceiverのイ…