Android関連のことを調べてみた2022年05月14日

Android関連のことを調べてみた2022年05月14日

xmlのshapeタグって意外と自由度が高いっていう話 part3

# 初めに
今回は、shapeタグの紹介記事第三弾になります
3個目はViewに一気対してこだわりを持たせられる`gradient`です。

## 本文
こちらは名前の通りグラデーションをつけることができ、色は`startColor`、`centerColor`、`endColor`の三種類を指定することがきます。
・`startColor`は***スタート位置の色***
・`centerColor`は***中間地点の色***
・`endColor`は***最終地点の色***を指定することができます。
色以外の要素となると
・`type`
・`gradientRadius `
・`centerX`
・`centerY`
・`angle`
の5点があります

`type`とはグラデーションの形を指定することができ、
・`linear `
・`radial `
・`sweep`
の3種類があり、`radial`は***放射状***に、`sweep`は***円形***にグラデーションをかけることができ、`type`を指定しない場合は`linear`になり***直線状***のグラデーションがか

元記事を表示

【Android】SharedPreferences を使ってみる

## 概要
Android 端末の内部ストレージに Key-Value 形式でデータを保存することができる SharedPreferencesAPI を使う機会がありましたので、その使い方についてご紹介したいと思います。

SharedPreferencesAPI はあらかじめ用意されている Android のライブラリで、端末のアプリ固有の領域にデータを保存したりそれを参照したりすることができます。

## 環境
Android Studio:2021.1.1 Patch 3
kotlin:1.6.20
targetSdkVersion:32
minSdkVersion:27

## 内容
### 準備
SharedPreferencesAPI を使って内部ストレージにデータを保存するには、まず “`getSharedPreferences()“` メソッドを呼び出してデータを書き込むための xml ファイルを作成します。
すでに作成済みの場合は指定したファイルに対してデータを書き込むことになります。

“` MainActivity.kt
val sharedPref = g

元記事を表示

【Flutter】Androidの感覚で実装してiOSで起こした不具合

# 不具合発覚
iOSの端末で名前が入力できないとの問い合わせから判明しました。

# 調査
以前、showCupertinoModalPopup を使った際に、Focus と Cursor の挙動がおかしくなったことがあったので似たような問題かな?と思ったが違いました。

連絡をくれた方とやり取りすると、日本語が入力できないとのことだったのでキーボードの設定周りを中心に調査するようにしました。

# 原因

以下の条件で再現することがわかりました。

– キーボードを絵文字と Gboard のような他社製キーボードのみにしている
– TextField の `inputType` に `TextInputType.name` を設定している

`TextInputType.name` を指定すると、iOS では `keyboardType` に `namePhonePad` が設定されるのですが、他社製キーボードのみにしていると、該当のキーボードがないため日本語を入力するキーボードが選択できないため入力できなくなってしまっていました。

# 対応

`inputType` を `Te

元記事を表示

Deno/TypeScript入門〜スタブ・サーバーを作ってみる編〜

# まえがき

※この記事は、以下の後続記事です。
Deno/TypeScriptの概要については以下の記事に記載しています。

https://qiita.com/y-some/items/ca6404b7024d54b1ff75

最近私はツールを開発する環境として「[Deno](https://deno.land/)」が気に入っています。
シンプルで、軽くて、ランタイムAPIや標準ライブラリが充実していて、開発体験が良いと感じています。
私のところではDenoを本番で採用しようとすると諸々ハードルがありますが、ツールの開発であれば選択肢として大いにアリです。

iOS/Androidアプリケーションや、シングルページ・Webアプリケーションを開発する際、よく使うツールの一例として「スタブ・サーバー」があります。

特に、バックエンド側(Web API)とフロントエンド側が別チームだったりする場合に、
**「バックエンド側の実装が完了するまでの間、フロントエンド側の実装が停滞してしまう」**
といった状況が発生することがあります。

そのような場合、**ダミーのレスポンス

元記事を表示

Androidアプリのメモリについて

# はじめに
メモリリークのエラー発生時に、使用可能なメモリとメモリ使用量について調査したのでまとめました。

# 開発環境
PC:MacBook Pro
OS:macOS BigSur
Android Studio:Arctic Fox 2021.1.1

# メモリ調査方法
`ActivityManager.MemoryInfo()`のメソッドを使用してメモリ情報を取得します。

“`kotlin:MainActivity.kt
// メモリ情報を取得
val activityManager = getSystemService(ACTIVITY_SERVICE) as ActivityManager
val memoryInfo = ActivityManager.MemoryInfo()
activityManager.getMemoryInfo(memoryInfo)

// 利用可能なメモリーサイズ
Log.d(“メモリ情報”, “availMem:” + memoryInfo

元記事を表示

【Android】altbeacon ライブラリを使ってフォアグラウンドで Beacon の領域監視を行う

## 概要
今回は前に書いた記事の続きで、フォアグラウンドで Beacon を検知してみたいと思います。
フォアグラウンドで検知処理を行うことで、アプリをキルした状態でも Beacon の領域監視を行うことができます。
ライブラリは altbeacon という Bluetooth ライブラリを使用します。

altbeacon ライブラリを使った Beacon 検知についての詳しい説明については前回の記事で解説させていただきましたので、使い方をご存知でない方は[こちらの記事](https://qiita.com/kenmaeda51415/items/ac5a2d5a15783bbe9192)を参考にしていただけますと幸いです。

## 環境
Android Studio:2021.1.1 Patch 3
kotlin:1.6.20
targetSdkVersion:32
minSdkVersion:27

## 準備
まずは実装の準備として以下のライブラリを gradle(appレベル) に追加します。

“` build.gradle
implementation ‘org.al

元記事を表示

What’s new in Android (2022) のセッションメモ

のセッションを見たメモです。

What’s new in Android では今年の Android に関するセッション内容の概要を紹介する動画になっています。
なのでこのセッション動画を見ることでざっくりとした Android に関する新情報をキャッチアップができるようになっています。
詳細は記載しているセッション詳細のリンクから動画を見てみてください。

#### 関連リンク
– https://io.google/2022/
– [13 Things to know for Android developers at Google I/O!](https://android-developers.googleblog.com/2022/05/13-things-to-know-for-android-developers-at-google-io.html)

## Jetpack ライブラリの話
– バックポートや新しい機能のライブラリで120を超えている
– 新しく追加された JankStats ライブラ

元記事を表示

with Android版 の CI を Bitrise から GitHub Actions に移行しました

## はじめに

with で Android エンジニアをしている [石田](https://github.com/maxfie1d) です。 with-android では CI でビルド、テスト、Lint、内部テスト用バイナリの配布等を自動化しています。

最近 with では GitHub のプランを変更しました。それに伴い GitHub Actions を使える環境になったので、 with-android では CIを Bitrise から GitHub Actionsに乗り換えました。本記事では GitHub Actions への移行理由、よいところ、ハマったところなどを簡単に紹介します。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/56635/c4c83fa6-e62d-1920-8f6c-38cf74f100a9.png)

:::note warn
※ 本記事は2022年4月時点での GitHub Actions の仕様に基づく内容になっています。最新の仕様は [

元記事を表示

GoogleI/O 2022で発表されたFirebaseの新機能をまとめてみた。

こんにちは。[virapture株式会社](https://virapture.com)でCEOしながら[ラグナロク株式会社](https://ragna-rock.com)でもCKOとして働いている[もぐめっと](https://mogmet.com)です。
![mogmet.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/42234/da66fe2b-213f-2236-da87-e48eb1d70a34.jpeg)
最近[ラグナロクのCKOに就任しました](https://prtimes.jp/main/html/rd/p/000000013.000038912.html)。頑張ります!

本日は2022年のGoogleI/Oで発表されたfirebaseの新機能について紹介致します。

結論から言うと、Crashlyticsがやばい進化してます!!!

## Firebase Extension

元記事を表示

【Android】KotlinのCountDownTimerを用いた時分秒タイマー

# はじめに
今回はKotlinのライブラリCountDownTimerを用いて、より実用性の高いタイマーを作りました。
時分秒表示やストップボタン、リセットボタンを実装してあります。
参考:[CountDownTimer公式ドキュメント](https://developer.android.com/reference/kotlin/android/os/CountDownTimer)

ソースコードは[こちら](https://github.com/noodle2290/NeoCountDownTimer)から

![Screenshot_20220512_015704.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/962236/dc639120-966a-d8e3-71cb-c56420bb58e8.png)

# 環境
+ Android Studio Bumblebee | 2021.1.1.patch3
+ targetSDK: 32
# 概要
1. View Bindingの設定
2. レ

元記事を表示

Solar2DアプリがAndroid端末で動画ストリーミング再生できない

## media.playVideoがリモートで動作しない
Solar2Dで開発したAndroidアプリで動画ストリーミングができない。
シミュレータとiOS端末では問題なく、Android端末のみ発生する問題。
`media.playVideo`のAPIリファレンスを見ると、ローカル、リモートどちらも再生できると記載があるが、なぜかストリーミング再生ができない。

## サンプルソース
サンプルソースをビルドし、Android端末で動かしてみる。
“`main.lua
local onComplete = function( event )
print( “video session ended” )
end
media.playVideo( “https://coronalabs.com/video/bbb/BigBuckBunny_640x360.m4v”, media.RemoteSource, true, onComplete)
“`
## 解決方法
solar2d 3619でビルドした際は問題なく、solar2d 3665でビルドすると発生
バージョンかOSの

元記事を表示

Ionic6でBLE機器と通信するメモ(今回はM5Stack)

BLE機器とスマホアプリでBLE通信するメモ
chromeでウェブBLEで動作は確認してきたですが、起動時に自動接続などブラウザベースではできなさそう?と思いアプリを試してみる次第
ウェブBLEでできちゃうなら、意味は薄くなるが。。
詳しく理解していないが、動くものをやってみる系なので、よくないことしてる可能性もあります。。

## 概要

下記流れでM5のデータをAPPまで伝える予定

blockly(UART BLE) < - > M5STACK(CORE2) < - > BLE通信 < - > スマホ(SamsungA20) < - > APP(Ionic)

## アプリ構築

### Ionicについて

Ionic FrameworkはオープンソースのUIツールキット
HTML,CSS,JavaScriptなどのウェブ技術を利用してAngular,React,Vueなどのフレームワークを使ってモバイルアプリやデスクトップアプリを構築可能。

![スクリーンショット 2022-04-12 155152.png](https://qiita-image-store.s3.ap

元記事を表示

Kotlin 1.6.0の変更点

※ソース記事は[こちら](https://kotlinlang.org/docs/whatsnew16.html)
※Kotlin/JSやKotlin/Nativeについては個人的に使っていないので、割愛します。
Kotlin 1.6.0では、新しい言語機能、既存の機能に対する最適化と改善、Kotlin標準ライブラリに対する多くの改善が導入されている。
[リリースブログ投稿](https://blog.jetbrains.com/kotlin/2021/11/kotlin-1-6-0-is-released/)でも、変更点の概要を知ることができる。

# 言語
Kotlin 1.6.0では、以前のリリース1.5.30の中でプレビューとして導入されているいくつかの言語機能の安定化がもたらされている。
– enum、sealed、Booleanが主語の網羅的なwhen式の安定化
– 基底型としてのsuspend関数の安定化
– suspend変換の安定化
– アノテーションクラスのインスタンス化の安定化

以下のような、様々な型の推論の改善と、クラス型のパラメータについてのアノテーションの

元記事を表示

Androidの地磁気センサーを用いて地図をヘディングアップ表示する

# はじめに

Androidの地磁気センサーを用いて地図をヘディングアップ表示するだけの話なのですが、そこら辺のサンプルはちょっと問題があったので改良した話です。

# そこら辺のサンプル

回転行列を元に SensorManager.getOrientation() でオイラー角を得て、その values[0] を使うのが、そこら辺のサンプルで転がってます。

おおむねうまく動くのですが、水平方向に向けたとき(画面が垂直になったとき)にグルングルン回ってしまいます。

また、それより高く掲げると反転してしまいます。

![図解](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/104360/0b6d9e46-c2d3-6cb9-e8b8-009a66640cbd.png)

# 改良

回転行列から何とかできるんじゃないかと思って試行錯誤したところ、何とかなりました。

回転行列Rを
“`
/ R[ 0] R[ 1] R[ 2] \
| R[ 3] R[ 4] R[ 5] |
\

元記事を表示

【Android】altBeacon ライブラリを使って領域監視を行う(v2.19以上対応)

## 概要
Beacon とは Bluetooth Low Energy (BLE) を発信する端末やそれを利用した位置特定技術のことです。
今回は Android 端末を使い、Beacon の領域監視を行う方法についてご紹介します。

ライブラリは altbeacon という Bluetooth ライブラリを使用します。

なお、このライブラリはバージョン3.0で従来使えていた多くのメソッドが使用不可になることが予定されており、2.19の時点でこれらのメソッドが非推奨となっています。
そのため当記事ではバージョン2.19以上に対応した書き方を紹介するとともに、旧バージョンからの移行方法についても合わせて述べたいと思います。

## 環境
Android Studio:2021.1.1 Patch 3
kotlin:1.6.20
targetSdkVersion:32
minSdkVersion:27

## 領域監視
領域監視とは Beacon 受信端末によって、Beaconの電波領域への自身の出入りを検知する機能です。
今回は altbeacon ライブラリを使って領域監視を

元記事を表示

専門学生がFlutterを独学で初めて3ヶ月でリリースした話

# はじめに
先日AppStoreとGooglePlayStoreに入館アプリをリリースしました。
学校の友人とアプリを作ることになったため, その練習としてこちらのアプリを作りました。
自分の通っている専門学校が点呼での出席確認を行なっていたことから
作ってみようとなったのがきっかけです。

## 完成像
![出席GIF_AdobeCreativeCloudExpress.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1631114/c1089680-22d3-6f97-d788-9468072c67d4.gif)

団体ごとに自作のQRコードをスキャンするだけで入館が完了するアプリです。
[AppleStore シュッ席- 入館管理アプリ](https://apps.apple.com/jp/app/id1620188388)
## GitHub
[secretused/student_attendance_app](https://github.com/secretused/student_at

元記事を表示

ADBで画面録画の方法

[MacのPCでADBを使えるようにする方法](https://qiita.com/yuta317/items/5ed5e42710437df0b45b)

[ADBを使ってスクリーンショットを撮ってPCに取り込む方法](https://qiita.com/yuta317/items/edcc72bf6f6af0eb0605)

こちらの記事は書きましたが、画面録画はまだ書いていなかったので、書いておこうと思います。

# 画面録画を保存したいフォルダに移動します。

必要ならターミナルを開いて、cdコマンドを使いフォルダ移動します。

“`
cd 移動したいフォルダのパス
“`

※初心者の方へ、移動したいフォルダをターミナルに向けて、ドラッグ&ドロップするとそのフォルダのパスがわかります。

# 画面録画する
下記のコマンドで撮影できます。

“`
adb shell screenrecord /sdcard/record.mp4
“`

Ctrl + cで録画終了できます。

# PCに取り込む
下記コマンドで取り込むことができます。

“`
adb pull /

元記事を表示

【Android】覚えておくと便利なExtension:Part1

# はじめに
何かしらの機能で必ず使用するExtensionですが、毎度実装している便利なExtensionを備忘録的に残しておこうと思います。

# その1

“`
fun T?.notNull(): T = requireNotNull(this)
“`
LiveDataからvalueを取りたい場合に、必ず値が設定される想定であっても返却物がnullableである為、記述にnullチェックが必要だったりしますよね。
そんな場合に活用できる拡張関数です。
こちらを使用すべきかというハンドリングはもちろん必要ですが、各LiveDataの運用がしっかり計画されていれば、とても便利な拡張関数なのでおすすめです。

# その2

“`
fun Fragment.getColor(@ColorRes colorRes: Int): Int =
ResourcesCompat.getColor(
resources, colorResId, null,
)
“`
こちらは皆さんご存知のカラーを取得するだけの拡張関数ですね。
こういった

元記事を表示

kotlin RecyclerViewの並び替え(ドラッグ&ドロップ、スワイプ)の方法

# 初めに
RecyclerViewのアイテムを長押しでドラッグ、そのままアイテムを移動 または、スワイプ
させる実装です
簡単にではありますが、実装方法を残しておきます

# 早速
まず、RecyclerViewが実装されたActivityやFragmentにメンバ変数を定義します

private var itemTouchHelper: ItemTouchHelper? = null

同じクラスのonCreate()関数もしくは、onViewCreated()関数内に以下のコードを入力します

// ドラック&ドロップの実装
itemTouchHelper = ItemTouchHelper(
object : ItemTouchHelper.SimpleCallback(ItemTouchHelper.UP or ItemTouchHelper.DOWN,
ItemTouchHelper.ACTION_STATE_IDLE) {
overrid

元記事を表示

[Android] ViewModel + DialogFragment で作成するダイアログ実装

# はじめに
業務で DialogFragment を作成しようと思いどうやって実装したら良さそうか考えたのでまとめです。
他にこうやった方が良さそうだよみたいなのがあれば教えていただけると嬉しいです。

# コード全文
https://github.com/fumiyatani/FragmentDialogSample

# やりたいこと
以下のような実装を目指していきたいと思います。
– DialogFragment は メソッドチェーンを使って表示項目を設定する。
– ViewModel を使って呼び出し元に対してボタンクリック時のイベントを渡す。

# 実装
## 1. クリックイベントなどを通知する ViewModel を作成する
まずはダイアログ用の ViewModel を作成します。
今回作成するダイアログはタイトルとメッセージ、ボタンが2つ (OKとキャンセル) のシンプルなダイアログを作成します。
なので以下の3つの実装を持つ ViewModel を作成します。
– ダイアログのボタンクリックイベントをViewModelへ通知するメソッド
– 呼び出し画面で監視する

元記事を表示

OTHERカテゴリの最新記事