- 1. android.os.HandlerのpostとpostDelayedを使った際のQueueに積まれる順番について
- 2. React Nativeでスマートフォンのカレンダーのデータを取得
- 3. AndroidでBluetooth関係のAPIを使ってPAPERANGに接続してみる
- 4. Flutter MethodChannel APIの使い方
- 5. Android でもとりあえず Ubuntu のデスクトップ環境を使いたい(UserLAnd 版)
- 6. 【Android】Jetpack、AndroidX、Architecture Componentsなどの用語や関係性を整理する
- 7. Androidの強制アップデートでよく使うアプリバージョン比較方法
- 8. [Android] TextView の textScaleX を自動調整する
- 9. YouTube Android Player APIのYouTubePlayerはYouTube公式アプリをキルすると道連れにされる
- 10. 【Android/Kotlin】SearchView(検索バー)とちょっと仲良くなって入力文字列を取得できるようになった
- 11. Android (Flutter) で Android dependency ‘xxx’ has different version というエラーが出たときの対処
- 12. Windows の Hyper-V を無効化して Android 開発用に HAXM へ切り替える
- 13. ECDSA の署名生成・検証を複数言語・環境でどう書くかまとめてみた
- 14. 【Android-Codelabs】9/36 〜 DataBindingの使い方 〜
- 15. Okhttp3でpfx証明書を使う
- 16. Android でもとりあえず Ubuntu のデスクトップ環境を使いたい(Termux 版)
- 17. Android でも Android アプリを開発したい
- 18. [Android] RecyclerView を用いた横スクロールする ListView の実装
- 19. Activityで定義したメソッドをAdapterで呼び出す方法(interfaceを使用)
- 20. [ Android ] setFlags()を使って一度に複数の画面遷移
android.os.HandlerのpostとpostDelayedを使った際のQueueに積まれる順番について
AndroidでHandlerの`post(Runnable r)`を複数回コールした場合は、postした順にQueueに積まれて、実行されます。`post(Runnable r)`と`postDelayed(Runnable r, long delayMillis)`を使った場合にどうQueueに積まれるか調べてみました。
ソースコードを見ると、postとpostDelayedの内部では共に`sendMessageDelayed(Message msg, long delayMillis)`が呼ばれていました。
“`java:Handler.java
public final boolean post(@NonNull Runnable r) {
return sendMessageDelayed(getPostMessage(r), 0);
}public final boolean postDelayed(@NonNull Runnable r, long delayMillis) {
return sendMes
React Nativeでスマートフォンのカレンダーのデータを取得
# 調査内容
Android/iOS共にNativeコードではスマートフォンのカレンダーデータにアクセスする事ができますが、React Nativeでアクセスする方法について調査しました。今回はAndroidでのみ動作確認を行いましたが、iOSでも動作可能と思われます。
# 設定手順
以下のモジュールを利用します。
https://github.com/wmcmahan/react-native-calendar-events“`
$ npm install –save react-native-calendar-events
$ react-native link
“`今回はAndroidで動作確認をしますので、AndroidのNa
AndroidでBluetooth関係のAPIを使ってPAPERANGに接続してみる
# はじめに
正月に秋葉原行ってじゃんぱらでPAPERANGを購入。
で、PAPERANGのAPIないかなと探したけど、Cordovaのプラグインしか見つからなかったので、プラグインのソースをAndroidStudioで普通にアプリに使えないか試してみる。
もし、もっと良い方法を知ってる方がいたらコメントください。うまく使えたら、Androidの会で何か作るときや、ハッカソンなんかで使ってみたい。
CordovaのPAPERANG pluginを見つけて、その中のjarを使ってできないか試したが、なんか、メーカーからIDとかもらわないとできそうもないのであきらめ、別の方法を模索。
Androidの会 浜松支部の定例会で、話をしていたところ、よさげなページを見つたので、そこを参考に紙送りができるところまで確認できた。良さげなページは以下のサイト
[M5StickC(ESP32)からBluetooth小型ポータブルレシートプリンタ「PAPERANG」を制御する](https://lang-ship.com/blog/?p=1318)
[Bluetooth小型ポータブルレシートプ
Flutter MethodChannel APIの使い方
# はじめに
FlutterはクロスプラットフォームなUIフレームワークです。UI特化のため、UI作る以外のプラットフォーム固有の機能を利用する場合には、公開されているライブラリ (プラグイン) を利用する以外にはFlutterの専用APIを利用してプラットフォーム側の実装を行う必要があります。
プラットフォーム固有機能の例は以下です。
* Audio/Videoなどのメディアのデコード, エンコード, 再生
* ランタイムパーミッションの表示や設定確認
* Bluetoothや加速度センサーなどのハードウェア機能
* WebView
* ストレージやファイルアクセスDart⇆プラットフォーム双方向でまとまった情報が無かったため、ここにまとめることにしました。
今回はいくつかあるAPIのうち、最もよく使うMethodChannelについて使い方を解説します。## 1. Flutter MethodChannelとは
Dartからプラットフォーム (Android/iOS等) のメソッドを呼び出すもしくは、プラットフォームからDartのメソッドを呼び出すためのAPIです。
Android でもとりあえず Ubuntu のデスクトップ環境を使いたい(UserLAnd 版)
## はじめに
先に公開した Android Studio を使うための最低限のデスクトップ環境の構築方法を記載します。
日本語入力もありませんが、その代わり最短で構築できると思います。Android の上で最も手軽に Ubuntu の環境を構築するなら UserLAnd が一番楽だと思われます。
Termux でもできますが、UserLAnd の方が手間が少なくて済みます。
その代わり、Termux より動作速度が遅いです。
どちらが良いかはお手持ちのスマートフォンの速度と好みで選ぶと良いと思います。## 注意点
デスクトップ環境(LXDEやXfce)のインストールは数時間かかります。
時間を確保してから実施するほうが良いと思います。## インストール
Play ストア で UserLAnd と XSDL をインストールしてください。
UserLAnd は Debian や Ubuntu といった Linux 環境を簡単に構築するためのアプリケーションになります。
XSDL は画面を担当するアプリケーションです。
UserLAnd はコマンドラインまでしかサポートし
【Android】Jetpack、AndroidX、Architecture Componentsなどの用語や関係性を整理する
Android の [Architecture Components](https://developer.android.com/topic/libraries/architecture/) を使ってみたくて情報を調べていたら、「Jetpack」「AndroidX」などの用語も合わせてよく見かけた。Android 開発経験が1年に満たない自分には、まだこれらの意味や関係性がピンと来ていなかったので、この機会に一通り調べて整理してみた。
※自分なりに解釈したものなので、もし間違っているところがあればコメントなどをください:pray:
# Android Jetpackとは?
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/65644/3de2cda6-5d43-5b18-a3ee-7b93bd6cbd4e.png)
https://developer.android.com/jetpack
> Jetpack は、高品質の Android アプリをデベロッパーが簡単に作成するた
Androidの強制アップデートでよく使うアプリバージョン比較方法
現在のバージョンと強制アップデートのバージョンを比較して、処理をするということはよくあります。
重大なバグがあった場合に「このバージョン以上は〜する」みたいなときに使うあれです。“`kotlin
/**
* バージョン
*
* @property major メジャーバージョン
* @property minor マイナーバージョン
* @property patch パッチバージョン
*/
class Version(val major: Int, val minor: Int, val patch: Int) : Comparable{ /**
* コンストラクタ
*/
constructor(major: Int) : this(major, 0, 0)/**
* コンストラクタ
*/
constructor(major: Int, minor: Int) : this(major, minor, 0)/**
* バージョン(Int)
[Android] TextView の textScaleX を自動調整する
# 何を作ったか
限られたスペースしか使えない状況で TextView に長い文字列を表示させようとして、途中で文字列が切れてしまい見た目がよろしくない経験は多々あるでしょう。解決策はいろいろあるでしょうが、ここでは textScaleX と呼ばれる TextView の属性に注目します。表示する文字の横方向への伸縮倍率を表す値であり、1より大きい値なら文字列を伸ばし、逆に1より小さな値なら文字列を収縮させます。TextView の最大横幅に収まり切らない長さの文字列を表示するときに、この textScaleX の値を自動で調節して文字列の長さを圧縮する View を作りました。クラス名は ExpandableTextView とでも呼びましょう。## デモ画像
分かりやすさのため、ExpandableTextView の背景を灰色にしてあります。
![expandableTextView_demo.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/440643/b7d1f051-24a0-11f2-3
YouTube Android Player APIのYouTubePlayerはYouTube公式アプリをキルすると道連れにされる
# この記事は
[YouTube Android Player API](https://developers.google.com/youtube/android/player?hl=ja)の謎挙動に振り回されて得た知見を共有する記事です。# 問題内容
以下のようなYouTube動画を全画面で流すシンプルなアプリを用意します。“`SamplePlayerActivity.kt
class SamplePlayerActivity : YouTubeBaseActivity() {
private val apiKey = “hogehoge” // 実際には公式で発行されたAPIkeyが必要です
private val youtubeId = “H_oGi8uuDpA” // 流したい動画IDprivate val videoListener = object : YouTubePlayer.OnInitializedListener { // 初期化リスナーを定義
override fun onInitializationSuc
【Android/Kotlin】SearchView(検索バー)とちょっと仲良くなって入力文字列を取得できるようになった
# 概要
Androidアプリで、リスト内検索機能を実装したかったが、検索バーとは面識がなかった。
そこで、検索バーと少し遊んで基本的な使い方を知った。設置方法や、入力した文字列を取得する際に使えそうなメソッドを備忘録的にまとめる。
![not_iconified_searchbar.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/124752/dc466b1c-6402-9735-ab12-e9985872fed8.png)# 画面に検索バーを設置する
`xml`に[`SearchView`](https://developer.android.com/reference/kotlin/android/widget/SearchView.html)を記述すれば検索UIを設置できる。“`xml
Android (Flutter) で Android dependency ‘xxx’ has different version というエラーが出たときの対処
## 状況
Flutter のバージョンを上げたらビルドできなくなりました。
Android Studio: 3.5.3
Flutter: 1.12.13+hotfix.7## やったこと
端的に言うと、次の2点です。
* 依存ライブラリのアップデート
* Gradleのアップデート
* guava の問題の解消以下、詳細です。
### 依存ライブラリのアップデート
具体的には下のようなエラーが出ていました。
“`
Launching lib/main.dart on Android SDK built for x86 in debug mode…
Running Gradle task ‘assembleDebug’…FAILURE: Build failed with an exception.
* What went wrong:
Execution failed for task ‘:app:preDebugBuild’.
> Android dependency ‘androidx.lifecycle:lifecycle-viewmode
Windows の Hyper-V を無効化して Android 開発用に HAXM へ切り替える
## はじめに
これまで Hyper-V で仮想マシンを利用していた Windows PC で Android アプリ開発を行うため、折角なので HAXM (Intel Hardware Accelerated Execution Manager) を利用して、Android エミュレータを高速化することにしました。
いろいろと調べてみると、下記制約などがあるとのこと。
1. CPU が Intel 製であること( Ryzen などの AMD 製 CPU では利用できない)
→ Intel Core i5 なので OK
2. CPU が仮想化支援機能 (VT-x) をサポートしていること
→ こちらも Intel Core i5 なので OK
3. BIOS や UEFI で仮想化支援機能 (VT-x) が有効化されていること
→ Hyper-V を利用していたからOK
4. Windows が仮想化支援機能 (VT-x) を認識していること
→ こちらも Hyper-V を利用していたからOK
5. Microsoft Hyper
ECDSA の署名生成・検証を複数言語・環境でどう書くかまとめてみた
## はじめに
楕円曲線DSA (ECDSA) は楕円曲線暗号を利用した電子署名方式で、通信のセキュリティ確保のために広く使われています。様々なプログラミング言語の標準的なライブラリでサポートされているため、言語をまたいで利用することができます。
ただし、実際に言語をまたいで署名生成 & 検証をしようとしてみると API の違いやフォーマット方式によりハマること多々あったため、書き方をまとめておくことにしました。
## この記事に書かれていること
Golang, Node.js, Kotlin, Swift での(できる限り)標準ライブラリを利用した キーペア生成、署名生成・検証方法を記載します。
以降の記述は基本的に ECDSA を前提に書かれています。
**全体的に、エラーハンドリングは省略しているので注意してください。**
## この記事に登場するキーワード
キーワード | 概要
— | —
EC | 楕円曲線、もしくは楕円曲線暗号のこと。
P-256 | 利用する楕円曲線の種類。キーペア生成、署名生成・検証時にパラメータとして指定します。NIST
【Android-Codelabs】9/36 〜 DataBindingの使い方 〜
2019年にGoogleから,Web上でAndroidを学べるコースが提供されました.([Android Kotlin Fundamentals Course](https://codelabs.developers.google.com/android-kotlin-fundamentals/))
この記事では,そのコースを実際にやってみてアウトプットしてみるといった内容です.
何かツッコミなどあれば編集リクエストかコメントかTwitterでいただければ修正いたします :pray:#今回学ぶこと
・DataBindingとはなにか
・DataBindingの使い方
・DataBindingを使うと,findViewById()よりも効率的なビューの呼び出しができるということこれまでは,MainActivity.ktでビューを参照する場合,`findViewById()`関数を使っていました.
シンプルなアプリであればこれでも良かったのですが,複雑なビュー階層がある場合,`findViewById()`はルートから探索を開始して,目的のビューが見つかるまで探索を続けるので,
Okhttp3でpfx証明書を使う
##### 追記履歴
2020/02/08 参考リンク追加
# はじめに
クライアント証明書を使ってHTTPS通信対応をすることになった時に書いたコードを会社を辞めてソースコードが見れなくなった時用にメモ代わりとして残しておく
何故Okhttpにこだわるかというと、大昔に苦しめられたもんだから大嫌いになったんですよねHttp(s)URLConnectionが
一部書き方が雑な部分や現役バリバリな人には釈迦に説法のような部分もあるかもですがご容赦をいt・・・ボク用のメモだから別にいっか!# 事前準備
1.main配下(main、resと同じ階層)に「assets」フォルダを作成
2.assetsフォルダ内にpfx証明書を格納(今回は便宜上「hogehage.pfx」とするヨ)
3.「AndroidManifest.xml」にインターネット通信のパーミッションを追加(↓こんな感じ)
追加場所はmanifest間なら問題ないが、activityの間には書くな“`AndroidManifest
Android でもとりあえず Ubuntu のデスクトップ環境を使いたい(Termux 版)
## はじめに
先に公開した Android Studio を使うための最低限のデスクトップ環境の構築方法を記載します。
日本語入力もありませんが、その代わり最短で構築できると思います。## 注意点
デスクトップ環境(LXDEやXfce)のインストールは数時間かかります。
時間を確保してから実施するほうが良いと思います。## インストール
Play ストア で Termux と XSDL をインストールしてください。
Termux は Linux という OS の一種が動作する環境になります。
Android も OS ですので、OS の上で OS が動作するという、ちょっとややこしい環境になります。
XSDL は画面を担当するアプリケーションです。
Termux はコマンドラインまでしかサポートしませんので、XSDL で画面をサポートしてもらいます。## Termux の設定
Termux を起動して、以下のコマンドでパッケージ(Linux アプリケーションの倉庫のようなもの)を更新してください。
“`
# パッケージのアップデート
pkg upgrade
Android でも Android アプリを開発したい
## はじめに
どれだけの人が Android で Android アプリを開発したいと思っているのか分かりませんが、本記事は Android 上でセルフ開発を行うための環境構築を目的としています。
セルフ開発とは、自身の端末で自身の端末向けのアプリケーションを開発することを指します。
Windows や Mac、Linux などはセルフ開発が出来ますが、Android は少なくとも公式には開発ツールが出てませんでしたのでついやってみたくなり、思い立ったが吉日とばかりに構築してみました。
(とはいっても公式の Linux 版を使用しているのですけれどもね。。。)
まだ構築したばかりですので、もしかすると実際に開発を行うと不備があるかもしれませんが、その辺りはご容赦ください。
何か見つかれば調査して解決方法を書いていきたいと思います。
本記事では Android Studio を最低限の動作を行うところまでを構築します。なお Android Studio を使うにあたってはスタイラスペンはあった方が良く、100円ショップのでも無いよりはマシです。
Android Studio のメ
[Android] RecyclerView を用いた横スクロールする ListView の実装
# 何を作ったか
Android でおなじみの ListView ですが、水平方向へのスクロールは出来ません。そこで、RecyclerView を継承して横方向へスクロールする ListView のようなウェジェットを作ります。# RecyclerView とは?
複数の View を良しなに表示するウェジェットです。かなり自由度が高いので、大抵のものはこれでできます。詳細に関しては、[【Android】RecyclerViewの基本的な実装](https://qiita.com/HideMatsu/items/a9ab48608e4f681d31fe) が詳しいです。# 完成品
“`java:HorizontalListView.javaimport android.content.Context;
import android.support.v7.widget.LinearLayoutManager;
import android.support.v7.widget.RecyclerView;
import android.util.AttributeSet;
im
Activityで定義したメソッドをAdapterで呼び出す方法(interfaceを使用)
## はじめに
今回は、Androidアプリ開発(Kotlin)における、`Activity`で定義したメソッドを`Adapter`から呼び出す方法に関して書いていこうと思います。
具体的な実装としては、`ListAdapter`の`setOnClickListener`メソッドが走るタイミングで、`Activity`で定義したメソッド(Fragmentを表示する)を呼び出すというものになります。少々前置きが長いため、実装方法について見たい方は[こちらをタップ!](https://qiita.com/drafts/095ba9b8b4be221d03aa#%E5%AE%9F%E8%A3%85%E3%81%AE%E6%B5%81%E3%82%8C)
## 背景
`Activity`で定義したメソッドを`Adapter`で呼び出したい時、[interface](https://dogwood008.github.io/kotlin-web-site-ja/docs/reference/interfaces.html)を使う以外のアプローチとして、1. `Coroutine`を使
[ Android ] setFlags()を使って一度に複数の画面遷移
例えば 画面1→画面2→画面3と遷移した後画面3→画面1と戻りたい時がある。そのような時finish()を使うこともできるが、画面が多いとうっとおしくなる。そんな時setFlags()というメソッドを見つけたので使ってみた。
##方法
新たに画面1のアクティビティを起動して、これまでに遷移してきた画面をスタックから削除することで実現できる。~~~java
Intent intent = new Intent(SubActivity2.this, MainActvity.class);
intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); //この引数は「スタックをクリア」を表す
startActivity(intent);
~~~##Intent.setFlags()
今回はスタッククリアの引数を使ったが、他にも引数がある。参考URLに乗せておいた。
画面の内容を変えたくなかったので、スタックにある画面1を使いまわす方法も考えたが、画面2,3が残るのが嫌だったのでスタッククリアを使った。##感想
setF