- 1. ArrowsM03(Android)の通知(電話、Lineなど)をiPhone(iOS)へ通知する方法
- 2. Kotlin でも MediaPipe の MultiHandTracking を動かしたい
- 3. 【Kotlin】ViewPager vs ViewPager2
- 4. FlutterアプリをCodemagicでCDしてみた(Google Playストア)
- 5. [Kotlin]Firebase Cloud Messagingの実装
- 6. AndroidからXMLデータ形式のWeb APIを使う
- 7. React Native BLE Major/Minor取得
- 8. Flutterでストアに提出できるrelease buildを一発で作るシェルスクリプト
- 9. 眺めて覚える C# Xamarin Forms(11) ListView Programmatically Ⅱ
- 10. Flutter アップデート(for macOS)
- 11. Delphi10 でTwilio apiを叩いて発信+ボイスメッセージ
- 12. Androidへのpush通知を試してみる
- 13. FlutterでGoogleMapとPersistentBottomsheetを実装した
- 14. [初心者向け]JavaでDiffUtilsでRecyclerViewを更新するミニマムサンプル
- 15. FlutterアプリをPlayストアに登録してみた
- 16. 【Flutter】Flavorの設定~buildまで(Android編)
- 17. [Android 10]Bluetooth HCIスヌープログの取り方
- 18. MediaCodecの非同期処理で動画再生
- 19. MediaPipe の Android のサンプルは簡単に試せます
- 20. 【Kotlin】下部ナビゲーション・アクティビティを触ってみる
ArrowsM03(Android)の通知(電話、Lineなど)をiPhone(iOS)へ通知する方法
####作成経緯
スマホ2台持ち(ArrowsM03、iPhone11)でスマートウォッチ購入検討。
安価なスマートウォッチは2台のペアリングができない?
「PebbleTime」ならAndroidとiPhoneの同時接続する手順を見つけたが安くない。
ならばArrowsM03の通知をiPhone11へ通知。
その通知をiPhone11とペアリングしたスマートウォッチで受信。
####懸念事項
IFTTTの通知をスマートウォッチで受信できるか!
ここ大事ですが… 事前検証ができない^^;
####閑話休題 作成方法
![i01.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/145508/19862afc-50ca-9c51-d266-ae942ef027cc.png)
![i02.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/145508/6aa92b07-b6a2-e87c-805d-4b946f466406.png)
Kotlin でも MediaPipe の MultiHandTracking を動かしたい
Kotlin で MediaPipe の MultiHandTracking を利用しているサンプルが無さそうだったので作ってみました。
プログラムは [GitHub](https://github.com/machidyo/MediaPipeHandTracking) に上げてあるので、よかったら参考にしてください。こんな感じで動きます。
![mutli_hand_tracking_sample.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/506075/65813178-202d-5b69-802b-d7ef0f78b593.gif)
# 作ったと言いながら
元々は[こちら](https://github.com/google/mediapipe/blob/master/LICENSE)の Java のコードを Kotlin に移植したものになります。Kotlin をある程度知っている人なら特に苦労することなく移植できると思います。(自分は素人に毛が生えたようなものなので小一時間ほどは浪費しまし
【Kotlin】ViewPager vs ViewPager2
最近 `ViewPager` を使う機会があったので調べたことを備忘録として記事にします。
AndroidXに移行すると `ViewPager2` というViewPagerの改良版が使えるので2つについて書いていきます。公式のドキュメントはこちら↓↓
[ViewPager](https://developer.android.com/reference/androidx/viewpager/widget/ViewPager?hl=en)
[ViewPager2](https://developer.android.com/reference/androidx/viewpager2/widget/ViewPager2?hl=en)実装方法だけ知りたいよという方はこちらの記事が参考になるかと思います。
[Kotlinでアプリを作ってみる(TabLayout,ViewPager,Fragment,FragmentPagerAdapter)](https://qiita.com/nanamama/items/93ebd9c6a2732cb49777)
[ViewPager2 + Tab
FlutterアプリをCodemagicでCDしてみた(Google Playストア)
FlutterアプリをGooglePlayストアコンソールに登録しました。
まだクローズドアルファ版ですが、公開してからやはりちょこちょこと修正したい箇所が発生して直しています。しばらく、手動でリリースをチクチク作成していたのですが、ふと気付きました。
CodemagicでCD出来るじゃないか!
ということで、CDする場合の手順をまとめました。
# CDってなに?
CD = Continuous Delivery = 継続的デリバリー
つまりリリース作業を自動化しましょうってことです。
CIは、継続的インテグレーションで、これはテストまでの開発プロセスを自動化しましょうってことでした。
リリースは怖いからいくつもチェック表を見ながら人が作業して・・・
というのがほとんどだと思いますが、チェックしても人の作業にミスは付き物。だったら自動化すれば良いじゃ無い?ということで、そっちを自動化するのが、CDの方です。
Codemagicへは、すでにtagトリガーなどで動くワークフローがあるものとします。
([こちらの記事](https://qiita.com/kasa_l
[Kotlin]Firebase Cloud Messagingの実装
# はじめに
– プッシュ通知の実装# 画面
Firebase ConsoleのCloud Messagingコンソール上で各項目を設定してプッシュ通知を送信できます。
今回は “テスト メッセージを送信” にて単一端末に対してプッシュ通知を送信します。
Activityは何もない画面
“
AndroidからXMLデータ形式のWeb APIを使う
# 概要
近年ではWeb APIのデータ形式といえばほぼJSONが使われていますが、最近XMLを使う機会があったので、そのAndroid実装についてメモを残しておきます。
# 要件
今回、実装に当たって以下のような要件で考えていました。
* Androidで動かす
* Kotlinで実装する
* Retrofit2から利用する (Converter.Factoryが必要)
* Converterのコードとか書きたくないつまるところ、最近のよくある実装と同じ書き方で楽に実装したかったということです。
# ライブラリ
XMLシリアライザの有名所としては[SimpleXML](http://simple.sourceforge.net/home.php)があり、Webを調べるとよく名前が挙がります([GitHub](https://github.com/ngallagher/simplexml))。[Converterもある](https://github.com/square/retrofit/tree/master/retrofit-converters/simplexm
React Native BLE Major/Minor取得
# はじめに
前回の記事(https://qiita.com/yokobonbon/items/f17bac71e9ba02a713ac)でReact NativeでBLEペリフェラルのスキャンを実現しました。今回はそこから、iBeaconのMajor/Minorデータ取得します。# Manufacture SpecificとiBeacon
以下のページが参考になります。
https://fabo.gitbooks.io/bledocs/content/nordic/beaconadvdata.htmliBeaconはUUID + Major(16ビット) + Minor(16ビット)で一意な端末を識別しますが、その情報は、BLE Advertised PacketのManufacture Specificデータの中に含まれます。Majro番号は25,26バイト目に格納され、Minor番号は26,27バイト目に格納されます。
Manufacture SpecificデータはBleManagerDiscoverPeripheralにおいて、advertisingの中のmanuf
Flutterでストアに提出できるrelease buildを一発で作るシェルスクリプト
タイトルの通り。本当はfastlaneとか使うか迷ったけどまずはこれで当分なんとかできそう。
1, 以下の内容shファイルをプロジェクトルートに作る。
“`shell
#!/bin/bash
echo ‘Build Android Release Resource’
flutter build appbundle –target-platform android-arm,android-arm64,android-x64echo ”
echo ‘Build iOS Release Resource’
flutter build ios –releaseARCHIVE_PATH=”$PWD/build/ios/Runner.xcarchive”
IPA_PATH=”$PWD/build/ios/Runner.ipa”
xcodebuild -quiet -workspace ios/Runner.xcworkspace -scheme Runner -sdk iphoneos -configuration Release archive -archivePath
眺めて覚える C# Xamarin Forms(11) ListView Programmatically Ⅱ
##今回は、ListViewにイメージを表示する方法です。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/274715/f402733b-42f6-6776-06e4-9d3cfebfa041.png)![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/274715/ccd1bffb-a14e-0331-e9c8-1c80bcd40f46.png)このイメージをListViewに表示します。**train.png**
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/274715/902c253c-b332-42b4-e400-056a106d321a.png)
###Resources/drawableの配下にドラッグします。
#ListViewの行データを保存するクラスを作成します。“`
Flutter アップデート(for macOS)
久々にFlutterを起動しようとしたときにアップデートをしたい場合のメモです。
# Flutter アップデート方法
doctor を実行する
“`
$ flutter doctor
“`実行するとアップデートの通知やIDEのバージョン互換のエラーとか教えてくれます。
“`
╔════════════════════════════════════════════════════════════════════════════╗
║ A new version of Flutter is available! ║
║ ║
║ To update to the latest version, run “flutter upgrade”. ║
╚═════════════════════════
Delphi10 でTwilio apiを叩いて発信+ボイスメッセージ
#はじめに
ほぼ前回の記事の使い回しですが、 Twilio のapiを使って発信を行い
音声合成によるボイスメッセージを送ってみました。
全く同じソースでWindows、Android共に動作します。#画面作成
以下の画面イメージの様に必要なコンポーネントを配置します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/625152/bdbc6f05-5d91-ebaf-69a5-49d3c9a86d4a.png)#ソースリスト
“`Pascal
unit rest1;interface
uses
System.SysUtils, System.Types, System.UITypes, System.Classes, System.Variants,
FMX.Types, FMX.Controls, FMX.Forms, FMX.Graphics, FMX.Dialogs, REST.Types,
FMX.Controls.Presentation, FMX.
Androidへのpush通知を試してみる
# 記事の趣旨
自端末のandroidにpush通知を送るまでの勉強.一応前提は以下.
– クライアントはAndroid 10,使用言語はKotlin
– IDEはAndroid Studioの3.4.2を使用
– 通知機能の実装に関する知識および経験は一切なし
– Googleアカウントは持っているが,Firebaseを使ったことはない## 1. 前提知識:Firebase Cloud Messaging(FCM)
Androidへのメッセージ通知にはこれを用いるとのこと.公式ページは[こちら](https://firebase.google.com/docs/cloud-messaging/?hl=ja).
### 1.1 アーキテクチャ
[こちら](https://firebase.google.com/docs/cloud-messaging/fcm-architecture?hl=ja)に書いてある(なぜかこのページだけ英語).流れとしては以下らしい.
1. サーバ上で所定のプロトコルでメッセージを作成し,FCM backendにリクエストを送付する.
2.
FlutterでGoogleMapとPersistentBottomsheetを実装した
### 実際の画面
![googlemap_with_persistentbottomsheet.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/526878/536fdc79-0b29-f912-70d4-2abff93bb1b9.gif)### 準備
– GoogleMapAPIを利用可能な状態にする。(android/ios)
– google_maps_flutterのReadmeにしたがってセッティングをする。### 利用ライブラリ
– google_maps_flutter: ^0.5.27
– https://pub.dev/packages/google_maps_flutter
– sliding_up_panel: ^1.0.2
– https://pub.dev/packages/sliding_up_panel### 実装
https://github.com/kiriko-rs/day3_point_in_map
GoogleMapのコードに関
[初心者向け]JavaでDiffUtilsでRecyclerViewを更新するミニマムサンプル
# はじめに
Androidでリスト形式のViewを表示するときはRecyclerViewを使うのが主流です。
RecyclerViewのリストの内容を追加・削除・更新が必要な時はnotify系のメソッドを使うのが主流でした。
しかしSupoprt Library24からDiffUtilsが追加されて、DiffUtilsで過去のリストと新規のリストのdiffを計算し、その結果を元にパフォーマンス上最適なnotify系メソッドを読んでくれるdispatchUpdateToを使うのが主流になっていると思います。
というわけでDiffUtilsでリストを追加するミニマムサンプルを作ってみます。↓完成イメージ
FlutterアプリをPlayストアに登録してみたリリースビルドも出来たので、ついにPlayストアに登録です。
まずはクローズドα版をリリースしてみます。なお、この情報は2020/05/01現在のものであり、将来にわたって内容を保証するものではありません。
(GoogleさんがUI変えたりステップ変えたら該当しなくなっちゃいますよってこと^^;)# Playストアの「リリース」の考え方
まずこれを少し説明します。
「リリース」=本番公開、と思っていると、多分混乱するので。## 1.リリースの種類
「リリース」には、いくつか種類があります。
|トラック|リリースの種類|内容|審査の有無|
|:–|:–|:–|:–|
|製品版|製品版|いわゆる本番への公開。すべてのAndroidユーザーが(端末の使用条件などに合致していれば)プレイストアからダウンロードして利用できる。|有り|
|オープン|ベータ版|ベータプログラムに参加するAndroidユーザーが、テスターとして利用できる。テスターには上限人数が設定できる。課金などは通常通り行われる|有り|
|クローズド|アルファ版|テスターに登録されたユーザーのみが、専用のオ
【Flutter】Flavorの設定~buildまで(Android編)
## はじめに
* 1つのプロジェクト内で複数の環境を動かしたい場合にFlavorを利用すると思います。その設定~buildの指定方法までを書いていきます。※本記事では、Androidのみの説明をしています。
※iOS側の設定に関しては、本記事の下にある参考文献を見て頂けると理解出来ると思います。## 手順
Flavorを使った環境分けの手順を書いていきます。### 1. 作成する環境について
例として、今回は以下の3つの環境を作っていきます。* develop → 開発環境
* staging → ステージング環境
* production → 商用環境### 2. まずbuild.gradleにFlavorの設定を追記
* android/app/build.gradleの`android{}`内に以下を追記していきます。“`android/app/build.gradle
flavorDimensions “flavor-type”productFlavors {
develop {
[Android 10]Bluetooth HCIスヌープログの取り方
# はじめに
BluetoothのHCIスヌープログを取得する方法をまとめました。確認はPixel 3(Android 10)で行いました。
他のOSバージョン、他の機種では方法が異なる場合がありますのご注意ください。# Bluetooth HCIスヌープログとは
HCI(Host Controller Interface)はBluetoothのプロトコルの一種で
BluetoothプロトコルスタックとBluetoothのチップの間のプロトコルです。
実際にエアーを飛んでいるパケットとは違いますが、データの送受信周りはほぼ同等で高価なアナライザー不要である程度の解析ができます。
# 確認環境
– MacBook Pro (13-inch,
MediaCodecの非同期処理で動画再生
# はじめに
Androidで動画再生アプリを作る時には[VideoView](https://developer.android.com/reference/android/widget/VideoView)を使うと簡単に実装できるんですが、これだとコマ送りや再生速度の変更など欲しい機能が全然できなくて、調べてみたら[MediaCodec](https://developer.android.com/reference/android/media/MediaCodec)を使う必要があることがわかりました。
だけどこれ、色んなことができる代わりに色んなことを全部自分で実装しないといけなくて使用するのが大変なんですね。。。
そのせいなのか分からないですが、あまり使用者がいないのか公式ドキュメント以外に記事が全然無い。
特にまとめ的なものとか概要、全体図がわかるようなものが無いんです。
なので僕のようにこれから勉強しようとする人にはなかなか辛いんです(TдT)まだ作りかけですが、MediaCodecを使って実装したサンプルを晒しておきます。
詳細は後述しますが、この記事のタイトルにある
MediaPipe の Android のサンプルは簡単に試せます
こんな感じで動かせるサンプルが割と簡単にできます。
![output.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/506075/ce84f0f8-509b-867c-cf23-013c36811de6.gif)
# こちらの手順がとても参考になりました
[Google MediaPipeのサンプルアプリをビルドしてAndroidにインストールする手順](https://qiita.com/d_forest/items/1b40fba54d7d896acfe6)# 補足
## 先にこっちをやっておくといいかも
Mac の人は [mediapipe hand trackingお試し](https://qiita.com/3attoC/items/b5bad7b2d54fa0bf013a) を参考に hello_world と Desktop 版を動かしておくと、どこまでできているか問題の切り分けができるかと思います。* Xcode をダウンロードするのに時間がかかります
* エラーが出ること
【Kotlin】下部ナビゲーション・アクティビティを触ってみる
最近のアプリには必ずと言ってもいいほど存在する下部ナビゲーション
AndroidStudioにはテンプレとして存在するからお試しに使ってみる![スクリーンショット 2020-05-03 17.30.54.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/283826/3d5d6aa9-e396-4ebc-569f-f34d74041c99.png)
#作ったらこんなの入ってた
![スクリーンショット 2020-05-03 17.33.42.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/283826/64accb3b-a1de-aeee-625a-9de9e0fc2ec4.png)
そのまま起動しても↓の感じで使える
![スクリーンショット 2020-05-03 17.40.40.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/283