Android関連のことを調べてみた2020年11月21日

Android関連のことを調べてみた2020年11月21日

ConstraintLayout に新しく追加された Carousel を使ってみた

[ConstraintLayout 2.1.0-alpha1](https://androidstudio.googleblog.com/2020/11/constraintlayout-210-alpha-1.html) に Carousel というものが導入されたので、何ができるのかとどのように使うのかを書いていきます。
(Carousel は alpha1 で入ったばかりの仕組みなので、大きく変更されることがあり得ます)

## Carousel の仕組み
過去に似たような実装をしたときに書いていますが、ベースのなる状態と左右に動かした状態の 3 パターンを用意しておき、アニメーションでスワイプの動きをして中身を動かしているように見せるという方法になっています。

https://qiita.com/Nabe1216/items/0ca12aa377fc7687c9c0

## 基本的な実装
仕組みでもあるとおり、ベースとなる状態と左右に動かした時の 3 パターンの状態を定義し、それらをアニメーションさせる感じになります。

まずは MotionLayout で使う View の

元記事を表示

Android studio:Kotlin:画面遷移

参照:

Android(Kotlin)入門講座:インテント(Intent)を使った画面遷移について

ファイル→新規→アクティビティ→からのアクティビティを作る。

Activity NameをSecondActivityなど適当につけ、中身を作る。

MainActivity.ktにまず以下をインポート

“`kotlin:MainActivity.kt
import android.content.Intent
import android.view.View
“`

なにかボタンを押したときに遷移する場合は以下のように記載。

“`kotlin:MainActivity.kt
// 実行ボタンタッ

元記事を表示

HELP!!⇒動いたなう【Kotlin】 端末起動時にレシーバーで受けて処理が出来ない。。教えてください。

かれこれ相当な時間を要したが、未だに解決出来ず助けて欲しいです。。。

# やりたいこと: 端末起動時にアプリからローカル通知を設定し直す
Android端末は再起動すると、
セットしてたAlarmManagerの処理は揮発しちゃうんですよね。。

そこで下記記事を見ていろいろやっては見たのですが
[Android の AlarmManager を改めて整理してみる](https://qiita.com/upft_rkoshida/items/8149605f751137b4c21c)
[does Alarm Manager persist even after reboot?](https://stackoverflow.com/questions/12034357/does-alarm-manager-persist-even-after-reboot)

アプリ起動時にレシーバーで受けるところがそもそも出来ていない様です
(レシーバーでトースト表示しにかかってますが一向に反応なし。。)

プロジェクト作りなおして、端末再起動時のレシーバーでの取得部分のみ最小限でやってみたのが下

元記事を表示

Gradle の Source Dependencies で Android Library を参照したら、ビルド不能になった

gradle の [Source Dependencies](https://blog.gradle.org/introducing-source-dependencies) 機能を使うと git の gradle プロジェクトをソースコードのまま参照出来て便利です。しかし、Android Library をソースコード参照したところ、ビルドが全くできなくなりました。

`./gradlew assemble` しても、参照先の build.gradle のタスクが一切走りません。結果として、必要なクラスが一切見つからない状態となってしまいます。

どうもエラーが内部で握りつぶされているようで、–info や –stacktrace オプションを付けても原因がまったく分かりません。

調査に挫折しかけたのですが、なにかの条件(再現できない…)で偶然 `SDK location not found.` のエラーメッセージが流れてきたため、原因が分かりました。参照先の Android Library プロジェクトで ANDROID SDK のパスが見つからず、 Android Plug

元記事を表示

Flutterチュートリアルを咀嚼する part1

Flutterって一つのソースを書くだけでiOSもAndroidもアプリ作ってくれるんだって
すごいなー
勉強してみよう

#対象のチュートリアル

https://codelabs.developers.google.com/codelabs/first-flutter-app-pt1#0

#コピペしてできあがったもの
スタートアップ企業の名前をつけてあげるために単語二つの組み合わせをリスト化してくれるアプリ

![スクリーンショット 2020-11-17 16.02.22.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/283826/a192fc3c-b4cb-941a-5006-90fcf9a06acb.png)

#ソースコード

“`dart:main.dart
import ‘package:flutter/material.dart’;
import ‘package:english_words/english_words.dart’;

void main() => runApp(My

元記事を表示

Flutter実装時にお世話になったページ 2020/11/19

## なにか

毎回、同じ問題に、同じ検索して、同じページで解決してるので。。。

## “`Image.network“` や “`NetworkImage“` で画像が表示されない場合がある

特に画像が大量にある画面でたまに表示できてない画像があった。で、ログが流れる。

> ════════ Exception caught by image resource service ════════════
> Connection closed before full header was received, uri = https://xxxxxx

[Stack Overflow “Network Image – Connection closed before full header was received…”](https://github.com/flutter/flutter/issues/25107#issuecomment-655655719)

これで解決する前に、同じページの別のコメントや

[I globally overrode the Htt

元記事を表示

AOSP system/btでEclipse IDEを使う(中途半端)


README.mdより。
### Eclipse IDE Support

1. Follows the Chromium project
[Eclipse Setup Instructions](https://chromium.googlesource.com/chromium/src.git/+/master/docs/linux/eclipse_dev.md)
until “Optional: Building inside Eclipse” section (don’t do that section, we
will set it up differently)

2. Generate Eclipse settings:

“`sh
cd system/bt
gn gen –ide=eclipse out/Default
“`

3. In Eclipse, do File->Import->C/C++->C/C++ Project Settings, choose the XML
location under system/bt/ou

元記事を表示

THETA Photo Dog [THETA Plug-in OLED活用]

#はじめに
リコーの[Yuuki_S](https://qiita.com/Yuuki_S)です。
弊社では[RICOH THETA](https://theta360.com/ja/)という全周囲360度撮れるカメラを出しています。
RICOH THETA VやTHETA Z1は、OSにAndroidを採用しており、Androidアプリを作る感覚でTHETAをカスタマイズすることもでき、そのカスタマイズ機能を「プラグイン」と呼んでいます。(詳細は本記事の末尾を参照)。
***
プラグイン開発ができるTHETAには、VとZ1の二種類があります。
このうち、Z1はフラッグシップ機。
1.0型裏面照射型CMOSイメージセンサーを搭載しRAW撮影も出来るスグレモノです。

これまでずっとVでプラグイン開発をしてきた自分ですが、ついにZ1を利用する機会がやってきました!
Z1を手にして、さて、どんなプラグインを作ろうかとまじまじと見比べてみます。
3世代Dagger Hilt の Context まわりでハマったこと

Dagger Hilt では、Context クラスが必要な場合のために、`@ApplicationContext`アノテーションと`@ActivityContext`アノテーションが用意されています。
[Hilt を使用した依存関係の注入  |  Android デベロッパー  |  Android Developers](https://developer.android.com/training/dependency-injection/hilt-android?hl=ja#predefined-qualifiers)
Context を使う上でハマったポイントがあったので、備忘録として残しておきます。

# 事例

例えば SharedPreferences をラップした、`SharedPreferencesWrapper`クラスを`MainActivity`で使う場合を考えてみます。

“`kotlin:MainActivity.kt
@AndroidEntryPoint
class MainActivity : AppCompatActivity() {

@In

元記事を表示

Flutter実装時にお世話になったページ 2020/11/18

## なにか

毎回、同じ問題に、同じ検索して、同じページで解決してるので。。。

## ContainerのBottomにだけ、枠線を入れたかった

[Stack Overflow “How to add a border to a widget in Flutter?”](https://stackoverflow.com/a/53680045)

## url_launcherでカスタムURLスキーマを使用したアプリ起動ができなかった(Android)

AndroidManifestまで意識が行かなかった。。。

[Stack Overflow “[url_launcher] When targeting API 30, canLaunch always retrurns false”](https://github.com/flutter/flutter/issues/63727#issuecomment-691066239)

## flutter upgradeしたら、ビルド通らなくなった。。。

こんなエラーが出るようになりました。

“`
Flutter Row()

元記事を表示

HMS Location Kit Android SDKの導入方法について

#1. Location Kitの概要
[Location Kit](https://developer.huawei.com/consumer/jp/hms/huawei-locationkit)はHMSの位置情報関連のサービスを提供するSDKです。
今回はLocation Kitの機能と使用方法について説明したいと思います。

##1.1 機能
Location Kitは以下の3つの機能を提供しています。

**1. ハイブリッド測位による位置情報の取得**
**2. ジオフェンス機能**
**3. 運動状態の識別機能**

それぞれの機能の概要と使用シナリオについては以下で紹介します。

###位置情報の取得
Location KitのAPIを使用することで、ハイブリッド測位(GNSS, WiFi, 基地局)による位置情報の取得ができます。
また、東京、大阪、名古屋などの主要都市でSuperGPS機能がサポートされ、位置情報を取得する際には、ロードサイドが分かるように精度よく位置情報を取得できます。

**利用シナリオ**
・現在地の取得
・タクシー予約アプリの場合、道路のどの側

元記事を表示

AutoCompleteTextViewにフォーカスを当てたままキーボードを非表示にする

## 環境

Android Studio 4.1.1
Build #AI-201.8743.12.41.6953283, built on November 5, 2020
Runtime version: 1.8.0_242-release-1644-b01 amd64
VM: OpenJDK 64-Bit Server VM by JetBrains s.r.o
Windows 10 10.0
GC: ParNew, ConcurrentMarkSweep
Memory: 4029M
Cores: 8
Registry: ide.new.welcome.screen.force=true, external.system.auto.import.disabled=true
Non-Bundled Plugins: org.jetbrains.kotlin, com.developerphil.adbidea

## AutoCompleteTextViewとは

キーボードによるインプットに対して、
自動で文字を補完してくれる機能を備えもったEditTextのことです。

通常、

元記事を表示

Github Actionsを使って自動テストをした話

# はじめに
今回はGithub Actionsを使って自動テストをした話を紹介していきたいと思います。

# 自動テストのタイミング
PR出したタイミングとかPR出したブランチにpushしたタイミングでいいのでは?
と思う方もいるかもしれません。

Github Actionsはpublicなレポジトリだと無料ですが、Organizationで使うと従量課金制になっています。
テストの量が多い場合、push毎にCIを走らせてしまうととんでもない実行時間になってしまいます。

またPR出したタイミングで修正があることに気付き新しくpushした場合、その部分はグリーンになっている保証はありません。

なので今回はレビュワーがapproveしたタイミング(LGTMしたタイミング)で自動テストを回すようにしました。

PR出す→修正がある場合は新たにpush→レビュワーがapprove→テスト→成功でも失敗でもslackに通知

# レビュー時にテストをする方法
自動テストのやり方などはググればたくさん出てくるんですが、approveされたらという条件が合致するものがなかったので苦労しました

元記事を表示

【Android】なんとかAndroidアプリのaabファイルのビルドに成功した件

【Android】GooglePlayアプリのkeystoreパスがわからず新規アプリ登録した件
https://qiita.com/technopixelinc2019/items/e7150caeadd1aff6ba4d

上記の記事の続きです。
初心者向け、かつ自分への備忘録として記載残しておきます。

ビルドしようとすると「Gradle build failed」と出るので調べてみる。
【参考URL】

参考ページによると、Unity2019からはBuild Settingsの項目から「Build System」が削除されたとの事。以前のver.なら「Systemの項目をInternalに設定」で良かったらしい。

Unity2019以降の場合は、Build Settingsの「Export Project」にチェック

元記事を表示

【Android】GooglePlayアプリのkeystoreパスがわからず新規アプリ登録した件

【Android】GooglePlayのアプリを更新しようとしたらkeystoreのパスワードを忘れていた件
https://qiita.com/technopixelinc2019/items/754adba7fb151c5c62eb

上記の記事の続きです。
結局パスは思い出せずじまい、新規アプリで登録する事にしました。
ただ、ビルドしようとするとエラーばかり。

参考になるかわかりませんが、自分と同じようなプログラマ初心者に向けて記載しておきます。

unityでビルドしようとしたら下記エラー。
unable to install additional SDK platform. please run the SDK Manager manually make sure you have the latest set of tools and the required platforms installed. See Console for details.

ググって調べてみると、2020/8/3からandroidAPI29以上が必要になったとの事。

参考URL
【Unity

元記事を表示

Flutter実装時にお世話になったページ 2020/11/17

## なにか

毎回、同じ問題に、同じ検索して、同じページで解決してるので。。。

## TabBarViewのスワイプによる切り替えを無効にしたかった

[Stack Overflow “disable swiping tabs in TabBar flutter”](https://stackoverflow.com/a/51523272)

## Firebase の Cloud Messaging による通知がiOSで受け取れなかった

公式ドキュメントをちゃんと読めってことですね。
iOS Integration のステップ2で、以下を読み落としてたのと
> Don’t follow the steps named “Add Firebase SDK” and “Add initialization code” in the Firebase assistant.

Dart/Flutter Integration のここを実装せずにテストしてました。(Androidは無くても届く)

“`
import ‘package:firebase_messaging/fireba

元記事を表示

Camera2+AudioRecord+MediaCodec+MediaMuxerでMP4録画するときの “こけポイント”

# TL;DR
AndroidのCamera2,AudioRecord,MediaCodec,MediaMuxerを組み合わせてMP4録画機能を実装する中で,
『こけポイント』(ハマりポイント)に何個かぶつかったので,記録として残しておきます.
ぐぐってもあまり出てこなかったものばかりなので,このTextが誰かの助けになればと.

(Code全体の説明は大規模になりすぎるので,こけポイントだけ書いておきます)

# 全体構成
↓ のような一番シンプルな構成を実現したときの,こけポイントを書きます.
![blueprint.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/129035/5533b90d-9c71-8b9f-60f1-821a623df8cc.png)

# こけポイント

## GL/EGLでMediaCodec Input SurfaceにRenderした画がEncodeされない

VideoのEncodeのために,MediaCodecのInput Surfaceに画を描く方法として

元記事を表示

脱SharedPreferences、DataStoreに移行してみよう

# はじめに
Android開発について学んでいる時、SharedPreferencesは序盤に触れるものではないでしょうか?
つい最近その代替となるライブラリがリリースされたので紹介したいと思います。

# Jetpack DataStoreとは
[Jetpack DataStore](https://developer.android.com/topic/libraries/architecture/datastore)は[Shared Preferences](https://developer.android.com/reference/android/content/SharedPreferences?hl=ja)の代わりに利用できる新しいライブラリです。Kotlin CoroutineとFlowを使っているので、非同期の読み取りや書き込みを簡単に行うことができます。(執筆時点の最新版は1.0.0-alpha02です)

現状まだ解説されているページが少なく、いろいろな情報が断片的に散らばっているような状況なので調べたことを整理しつつ、纏めたいと思います。

# Prefer

元記事を表示

Android Firebase Cloud Messaging notification

Android Firebase Cloud Messagingで、ノーティフィケーションが表示されるのは、アプリが終了している状態。
アプリが起動中、または、バックグラウンドにある状態では表示されない

元記事を表示

Pepper SDK入門(5) Robot focus と Robot lifecycle

Pepper SDK Plugin導入から始まり、簡単なロボアプリの開発を行ってきました。今回は、QiSDKの基本となるRobot focus と Robot lifecycleについて説明します。

#1.フォーカスを理解する
まずはロボットフォーカスについての簡単な説明です。 Activityがロボットのアクションを実行するためには、ロボットフォーカスが必要です。ロボットフォーカスはフォアグラウンドのActivityだけが保持することができ、ロボットフォーカスオーナーと呼ばれます。ロボットフォーカスはQiSDKに管理されており、Activityはいつでもロボットフォーカスを獲得したり喪失したりする可能性があります。

#2.ロボットライフサイクル
Pepper SDK入門(2) はじめてのロボアプリ開発①で登場したロボットライフサイクルについてです。 QiSDKがそれぞれのActivity用のロボットフォーカスを渡すために、RobotLifecycleCallbacksインタフェースを実装したオブジェクトが必要になります。以下はActivityにRobotLifecycleCall

元記事を表示

OTHERカテゴリの最新記事