Android関連のことを調べてみた2021年10月09日

Android関連のことを調べてみた2021年10月09日

Play App Signingで登録されている署名のSHA1のハッシュ値を取得する方法

Play App Signingで登録されている署名のSHA1のハッシュ値を取得する方法がわからなかったので調べてみました。

まずは、Play Store ConsoleのPlay App Signingのページに記載されているSHA1のフィンガープリントをバイナリーエディタに貼り付けて、保存。ここではファイル名をsha1.binとします。
その後以下のコマンドで、base64.txtにハッシュ値を出力します。

“`
openssl base64 -in sha1.bin -out base64.txt
“`
以上です!

元記事を表示

Pepper SDK入門(33) LookAtで見えないもの以外を見つめる

#はじめに
LookAtは特定の物や人を見たり、頭部とホイールでそれをトラッキングしたりするのに用いられます。魑魅魍魎や未確認生物の類は見えないはずですが、逢魔時とか丑三つ時とかに試してみるといいかもしれません??
下はLookAtアクションをPepperに実行してもらう場合のサンプルコードです↓

“`java
//LookAtのためのターゲットフレームを取得
Frame targetFrame = …;

//アクションをビルド
LookAt lookAt = LookAtBuilder.with(qiContext)
.withFrame(targetFrame)
.build();

//非同期にアクションを実行
Future lookAtFuture = lookAt.async().run();

//実行キャンセルのリクエスト
lookAtFuture.requestCancellation();
“`

#見て見てPepper
Pepp

元記事を表示

【Android】WebViewをJetpack Composeで使った場合の、バックキーで前ページに戻る方法

WebViewでは、バックキー(戻るボタン)を押した場合に前のページに戻る(ブラウザバック)のが一般的な動作かと思います。
本記事では、WebViewをJetpack Composeで使った場合の、バックキーで前ページに戻る方法をメモとして投稿します。

# コード
“`kotlin
@Composable
fun MyWebView() {
// 1
val backPressed = remember { mutableStateOf(false) }

// 2
AndroidView(
factory = { context ->
WebView(context).apply {
webViewClient = object : WebViewClient() {}
}.also {
it.loadUrl(“https://qiita.com”)
}
},
//

元記事を表示

MediaCodecでbitmap列から動画作成

動くコードと参考文献を載せておきます。kotlin&Coroutineに書き直しました。随所お好みにカスタマイズしてください。
jcodecの100倍くらいエンコード早かったです。さすがAndroid純正フレームワーク。

2021/10/08.
エラーが出たので、scaled.recycle()をコメントアウトしました。

“`使い方.kt
val frames: List = ….
val videoFile = MediaCodecEncoder().encode(this, frames)// suspend function

“`

“`MediaCodecEncoder.kt

// MediaCodecフレームワークを使ったエンコード
class MediaCodecEncoder {

private val MIME_TYPE = “video/avc”
private val FRAME_RATE: Int = 30
private val BIT_RATE: Int = 16000000
priv

元記事を表示

Couchbase Mobileアプリケーション開発へのロードマップ

# はじめに

Couchbase Mobileによるアプリケーション開発に関する記事や参考情報を、カテゴリー別に整理しています。

## 関連技術

https://qiita.com/yoshiyuki_kono/items/05496b26e1dc4eb99ddb

## 基本的な使い方(ドキュメントより)

### Couchbase Lite

https://qiita.com/yoshiyuki_kono/items/b24266297c4b53017264

https://docs.couchbase.com/couchbase-lite/current/index.html

### Sync Gateway

https://docs.couchbase.com/sync-gateway/current/introduction.html

## チュートリアル

https://docs.couchbase.com/tutorials/mobile-travel-sample/introduction.html

### 利用可能な言語

#### Androi

元記事を表示

Pepper SDK入門(32) Frameでメリーさんのように正確な現在地を把握する

#はじめに
都市伝説に登場するメリーさんは、自分の現在地を丁寧に電話してきてくれます。Pepperもそのように正しい位置を把握できれば便利ですね!そこで登場するのがFrameです。
Frameは特定の位置を表します?それでは早速、順を追ってFrameについての理解を深めていきましょう。

#FreeFrameかAttachedFrameで最先端
Frameの位置は後から更新されます。交信はしません??
FreeFrameは緯度と経度を表します。例えば本棚の位置にフレームを設定すれば、Pepperはどこに動いても本棚に戻ってきます。
AttachedFrameは対象の物体との相対位置を表します。人も設定することが可能で、その人が動けば一緒についていくピクミン的挙動を示します?画像は刷り込まれるひよこです。
niwatori_hiyoko_koushin.pngUnity x Androidビルドで「Failed to update Android SDK package list. See the Console for details.」

2ヶ月ぶりに、久々Androidビルドをしたらこんな下記エラーが。

“`
Failed to update Android SDK package list. See the Console for details.
“`

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/37406/2d909f2a-459d-5bf4-6813-1cc86fe6de5b.png)

## 試したこと

### UnityHubのAndroidモジュールが正しいかチェック

Android SDKが新しいかチェック。
UnityHubのモジュールを使っているので、下記をチェック。
問題なさそう、念の為Unity2019をつかっていたので最新版のUnity2019.4.30f1を入れ直し+Androidのモジュールも

下記画像のようにした。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/37406

元記事を表示

【Android】OkHttpによるHTTP通信時のコネクションの再利用

## 概要

[OkHttp](https://square.github.io/okhttp/)のOkHttpClientオブジェクトを再利用することによる通信処理の効率化について記載します。

[iOS(Swift)についてはこちら](https://qiita.com/cwan/items/a1d169152fc65520bf3b)

## 障害事象

弊社が開発しているAndroidアプリのデータ転送量が多すぎるのではないかという報告を受けました。データ転送量を測定してみると、HTTPリクエスト・レスポンスのヘッダーおよびボディサイズの合計の2.5倍程度の量が発生していました。

※このアプリの外部への通信はすべてOkHttp (ver.4) を使用して実装されています。

## 調査方法

Android StudioのProfilerを使用して、通信状況を調べてみることにしました。

1. Androidシミュレーター (AVD) でアプリを起動する
1. ツールバー > [View] > [Tool Windows] > [Profiler]
1. [SESSION] の

元記事を表示

AndroidのNavigationコンポーネントで親Fragmentを取得する方法

# 解決策
“` kotlin
val navHostFragment = parentFragment as NavHostFragment
val parent = navHostFragment.childFragmentManager.fragments[0]
if (parent is MainFragment)
// …略
“`
`Fragment#getParentFragment()`が`NavHostFragment`なのでDialogFragmentなどを実装している時、呼び出し元のFragmentにコールバックさせるのがひと手間いる。
`NavHostFragment`の子Fragmentを覗いてみたら

“`
[呼び出し元のFragment, 呼び出されたFragment, …]
“`
という風になっているので上記の内容で呼び出し元のFragmentを取得できた。

:::note warn
ただし、バックスタックがたくさんある場合はfragments[0]が呼び出し元のFragmentとは限らない。
:::

# 別の解決策
https://s

元記事を表示

Android NDK で静的ライブラリを最小構成で作成する

## ことの発端

他のプラットフォームで `C++` を使って開発した機種依存しないコード(所謂`共有コード`)を `Android` で使いたい。
小規模ならば `AndroidStudio` で自動生成された `CMakeLists.txt` にソースコードを追加して終了なのだが、`共有コード`が巨大(またはビルドに相当な時間が掛かる)だと色々と厄介。
なので、`共有コード`を独立してビルドして、後でガッチャンコしたい。

## `共有コード`のビルド

いきなり巨大な`共有コード`だと大変なので、まずは簡単な構成でやってみましょう。

### 1. ファイル・フォルダ構成

“`:ファイル・フォルダ構成
/
src/
sub.cpp
sub.h
CMakeLists.txt
build.sh
“`

### 2. `CMakeLists.txt` を作る

お好きな感じで `CMakeLists.txt` を作ります。

“`cmake:CMakeLists.txt
cmake_minimum_required(VERSION 3.10.2)

元記事を表示

Androidテスト全書 第1章 テスト入門

## はじめに
私はAndroidエンジニア一年目になります。
今まで全くと言っていいほどテストコード書かずにいました。
どう書けばいいかもわからない中「[Androidテスト全書](https://peaks.cc/books/android_testing)」を読み始めました。
アウトプットのため各章をまとめさせていただけたらと思います。

書籍については以下になります。
Androidテスト全書
https://peaks.cc/books/android_testing
### なぜテストが必要なのか

– 未然にクラッシュ防ぎ、開発プロセスに強固なテスト基盤を構築することは品質を確保する必要があるから
– Play Storeで星1のレビューのついたアプリを解析したところ、42%もの割合のアプリがクラッシュを含む安定性の問題があった
– Googleは低品質なアプリをPlay Storeのランキングや検索結果の上位には表示されないようにアルゴリズムを改良した
– テストは動く仕様書であり資産である

### Androidのテストの種類と方法

– ブ

元記事を表示

ViewModelの実装方法まとめ

前回は`Navigation`に関しての記事を書きましたが、今回は`kotlin`における`ViewModel`の実装方法、`LiveData`の使い方、`DataBinding`の適用方法についてまとめていきます。

# この記事の内容
公式の[ドキュメント](https://developer.android.com/guide/navigation?hl=ja)やトレーニング「[Android Kotlin の基礎](https://developer.android.com/courses/kotlin-android-fundamentals/overview?hl=ja)」のレッスン5「アーキテクチャ コンポーネント」を参考に実装のポイントとエッセンスをまとめていきます。
`ViewModel`とは何か、また`MVVM`デザインパターン等については触れません。

### 前提知識

* kotlinの基礎的な文法
* AndroidStudioの使い方/アプリの作り方
* 画面や画面部品の配置方法
* `Navigation`の実装方法(前回記事参照)

### 開発環境

元記事を表示

Jetpack Composeで簡単な画面遷移を行う

単純なコンポーザブル関数が用いられている2画面間の遷移(のようなもの)をする方法の一つです。
build.gradle(:app)に以下のような依存関係を追加してください。

“`gradle:build.gradle(:app)
// いろんなやつ

dependencies {
// いろんなやつ
implementation “androidx.navigation:navigation-compose:2.4.0-alpha09”
}
“`

:::note warn
注意
compileSdkVersion が 30以下だと後の処理でエラーが出る可能性があります。
:::

今、以下のような `FirstScreen` と `SecondScreen`を移動する場合を考えます。

“`kotlin
@Composable
fun FirstScreen(navController: NavController){
Column {
Text(text = “1つ目の画面”)
Button(onClick = { navCo

元記事を表示

Android enumではなくIntDefを使ってdata classを組み立てる

# 環境
Android Studio Arctic Fox | 2020.3.1 Patch 2
Kotlin 1.5.31

# 概要

列挙型の値を使うときに、`@IntDef`を生かしてdata classを組み立ててみます。

# なぜenumではなくIntDefを使うのか

Google I/O 19で、`Build apps for the next billion users` という動画があります。

この中の、`Reduce your app size`に挙げている項目で、`

元記事を表示

やらかし:AndroidのNavigationコンポーネントのSafe Argsを使っててnavArgs()がUnresolved referenceになった

# 結論
結果から言うとただの勘違いでした。

:::note warn
実装方法は間違えてないのに解決できない方はこちら
:::

# 起こったこと
“` kotlin:DetailFragment.kt
class DetailFragment : Fragment() {
companion object {
private val args: DetailFragmentArgs by navArgs() // navArgs Unresolved reference.

fun newInstance() {
// …略
}
}
private var _binding: DetailFragmentBinding? = null
private val binding get() = _binding!!

// …略
}
“`
何さがしてもUnresolved referrenceが解

元記事を表示

dronekit-androidをビルドしてみる(2021年10月版)

# はじめに
最近、[Herelink](http://www.japandrones.com/shopdetail/000000000169/)を筆頭にAK82、MK15などMAVLink対応スマートコントローラの国内販売が相次いでいます。これらにはAndroid OSが載っているのでカスタムアプリ開発手段の一つとして[dronekit-android](https://github.com/dronekit/dronekit-android) のニーズが出てくる可能性があります。

そこで、Androidの経験が浅い人向けに2021年10月時点最新のAndroid Studioを使って[dronekit-android](https://github.com/dronekit/dronekit-android)をビルドする手順をまとめました。dronekit-androidは2018年以降更新が止まっていることもあり、作業内容はほぼツールのバージョンの整合性合わせとなります。

* サンプルアプリからの機体(シミュレータ or 実機)への接続確認が取れていないため、そちらの確認が取

元記事を表示

Unityビルドにハマった時に見る備忘録

#最初に
これらは備忘録でざっと書いているので日本語がおかしかったりこの方法で直らない可能性があることをご了承ください

#Unityビルドに失敗する場合
##エラーが100個以上大量に出ている場合
エラーの量で雑に分類します。
エラーメッセージを見る。
### Duplicate class com.google.android.gms.ads.identifie … と言われてる場合

例えばこのエラーメッセージの場合

java.lang.RuntimeException: Duplicate class com.google.android.gms.ads.identifier.AdvertisingIdClient found in modules classes.jar (:com.google.android.gms.play-services-ads-identifier-17.0.0:) and classes.jar (:play-services-ads-identifier-17.0.0:)

元記事を表示

[Kotlin] data class と普通のクラスの違い

# 事の発端
師匠に突っ込まれたので。
まだまだ、思考が浅かったです。

# データクラスとは?
データクラスとは、Kotlin特有の仕様で、データを保持するだけのクラスはdataマークをつけることで定義されます。
データクラスとして成り立たせるには、

– プライマリコンストラクタに引数を一つは持たせること。
– val or var でイミュータブルか否かを明示すること
– 抽象クラス、openクラス,シールドクラス、インナークラスであってはならない

が必要です。

Javaでは、フレームワークに依存していない無添加なオブジェクトによって、(いわゆるPOJO)データを保持するだけのクラスは作れますが、かなりボイラープレート多いです。

# 普通のクラスとの違い
上記3つの縛りはあるものの、確かに違いは何かと言われるとちゃんと考えていなかった。
恐らく、dataマークを付与することでデータを保持するのに特化した仕様になるのだろうが、何が違うの

元記事を表示

汎用デシジョンテーブルIMSが新たに追加になりました。

#はじめに
ifLinkマイクロサービスを開発している八教と申します。
新たにデシジョンテーブルにより判定して結果を送信するフィルターIMS
「汎用デシジョンテーブルIMS」が追加されましたので、紹介させていただきます。

#ifLinkとは
https://iflink.jp/

#汎用デシジョンテーブルIMSについて
IMSのデータがデシジョンテーブルに合致するか判定し、
最初に合致したデシジョンテーブルの結果を返却します。

デシジョンテーブルってなに?という方は以下参照
https://medium-company.com/%E6%B1%BA%E5%AE%9A%E8%A1%A8/

例えば入力に乗車駅、降車駅、支払いを出力するIMSがあった場合、
それらの入力を受け取ってデシジョンテーブルより運賃を算出。
算出結果をトーストに表示することができます。

IF-THEN のイメージ
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1780474/f5ea05a6-b607-e1ff-

元記事を表示

AmazonアプリストアにAndroidアプリを登録してみた

# 概要

[Amazonアプリストア](https://www.amazon.co.jp/Android%E3%82%A2%E3%83%97%E3%83%AA/b?node=2381130051)に自作アプリ[CIFS Documents Provider](https://f-droid.org/packages/com.wa2c.android.cifsdocumentsprovider/)を登録してみたので、その内容について書きます。

# Fire OSとAmazonアプリストアについて

Amazonでは、[Fire タブレット](https://www.amazon.co.jp/Fire-タブレット-ファイア-Amazon/b?ie=UTF8&node=3933931051)という、電子書籍リーダ向けのタブレット端末が販売されています。これはE-ink画面のKindleとは異なり、Fire OSというAndroidをベースとしたOSが搭載されています。AndodroidとFire OSのバージョンの対応関係は、次のページに書かれています。

[Fire OSの概要 \|

元記事を表示

OTHERカテゴリの最新記事