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

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

flutter doctor コマンド時の Android toolchain に関するエラー

-環境
Flutter 3.0.0
Android Studio Chipmunk | 2021.2.1

-エラー
[!] Android toolchain – develop for Android devices (Android SDK version 32.1.0-rc1)
X cmdline-tools component is missing
Run `path/to/sdkmanager –install “cmdline-tools;latest”`
See https://developer.android.com/studio/command-line for more details.
X Android license status unknown.
Run `flutter doctor –android-licenses` to accept the SDK licenses.
See https://flutter.dev/docs/get-started/install/window

元記事を表示

【Kotlin】Viewを長押し時、クリックイベントをリピートする処理を追加する

Viewを長押しした時にクリックイベントをリピートする処理を追加したく、
以下のJavaコードをKotlinに変換したコードを作成したため、備忘録として残しておきます。

https://gist.github.com/shisashi/1718672

# 環境
– Android 10
– Android Studio 4.1.3

# コード

“` LongClickRepeatAdapter.Kt
import android.annotation.SuppressLint
import android.os.Handler
import android.os.Looper
import android.view.MotionEvent
import android.view.View

class LongClickRepeatAdapter {

/**
* 長押し時のリピート処理間隔
*/
companion object {
private const val REPEAT_INTERVAL: Long = 1

元記事を表示

Androidアプリ(NDK)開発で時々logcat出力されない

### 問題
AndroidのNDKを使った開発で、C++コードでベタにlogcat出力すると、全く出力されなかったり、少しだけ出力されたりする。

### 対策
一旦適当な長さでキャッシュしてから書き出すように変更して、usleepでちょっと待つようにしたら少し遅くなるけどlogcat出力されるようになった。リリースビルドが必要。いつもこれでうまくいくのかは不明。

“`C++: C++(NDK)のlogcat実装例

#include
#include

#define dprintf(…) { \
__android_log_print(ANDROID_LOG_DEBUG, “MyNDK:”, __VA_ARGS__);\
usleep(5000);\
}
….
void printTbl(std::vector &tbl){
float numPrintUnit = 20.0f; // キャッシュするサイズ(usleepとのバランス)
int numTbl = tbl

元記事を表示

久々にAndroid開発する人のlinter導入ログ

# はじめに

現在転職活動中だが、とある会社の技術試験中に自分のAndroid開発の知識が古すぎることを痛感した。
以前から考えているアイディアでアプリを作ることにより、
現代のAndroid開発の知識を習得し直すことにした。

その時の学びをメモしていく。

## 筆者の知識レベル

自分のAndroidの知識レベルはおおよそ7年前、OSのバージョンだと4が出るかどうかレベルのものだ。
Android StudioやKotlinは普及する前だし、Gradleも触ったことがなかった。

ライフサイクルやcontextの知識はそれなりにあるぐらい。

## 環境

IDEはAndroid Studio Arctic Fox | 2020.3.1 Patch 1、OSはWindows10
さっくりいうなら2022年4月の最新環境である。

# Linter導入

今の自分がAndroidアプリを作るとして、まず手を付けること…
それはコードやプロジェクトの構成に誤りが生じる可能性を十分に下げること。
つまり、linterの導入だ。

Android+Kotlinの場合、手軽に使えるものは

元記事を表示

Google I/O 2022で驚いたところ

個人的に驚いたところを**太字**にしておきます。

AndroidのエンジニアなのでAndroidに関するものが多めです。なにか大きな間違などがあればご指摘お願いします。修正いたします。 :pray:

またまだ見ていきますが、一旦、`Keynote`,`Developer Keynote`, `What’s new in Android`, `What’s new in Jetpack`, `What’s new in Development tool`を見たメモを書いています。

まだまだ、ここに追加していく予定です。

# セッション: Keynote

翻訳に24の言語が追加

Google Mapの3Dマッピング。 immersive View。めっちゃきれい

元記事を表示

androidアプリ インターバルタイマーの開発

# CoCoIntervalTimer紹介ページ
筋トレなどの時に使用できるインターバルタイマーアプリの紹介です。

## 概要
たとえば、第1種目30秒、第2種目50秒、休憩20秒 以上の流れを×3セット!などの
プランを作成し、タイマーとして動作させます。

## 用語解説
-プラン
第1種目30秒、第2種目50秒、休憩20秒 以上の流れを×3セット!などのトレーニングメニュー全体を1つのプランとします。

-ステップ
プランを構成する要素です。
第1種目30秒→第1ステップ 第2種目50秒→第2ステップ

-シンプルプラン
ワーク部分と休憩部分を何セット行うかのシンプルなプランです。(30秒運動、10秒休憩を3セットなど)
シンプルプランはワーク秒数、休憩秒数、セット数を指定することで作成できます。

-カスタムプラン
複数ステップをカスタムしてプランを作成できます。
カスタムプランでは自由にステップを追加してより自由なプランを作成できます。
第1種目30秒、第2種目50秒、休憩20秒 以上の流れを×3セット!などはカスタムプランです。

## メイン画面
アプリ起動時に起動

元記事を表示

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] |
\

元記事を表示

OTHERカテゴリの最新記事