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

Android関連のことを調べてみた2020年12月01日
目次

【Android】Single ActivityにおけるsharedViewModelのスコープについて【Koin】

# はじめに
KoinでViewModelをインジェクトする際には、`viewModel()`と`sharedViewModel()`の二つのやり方がある。
僕が担当しているアプリでは基本Fragment-ViewModelで一対一の関係になっているのだけど、ViewPagerを使用していたりするとViewModelをFragment間で共有したい場面が多くて、そういう時に`sharedViewModel()`が大活躍してくれる。

ただ、今までなんとなく`sharedViewModel()`を使ってきてしまったが故に、こないだちょっと沼にハマってしまった。
今回はそんな`sharedViewModel()`で共有したViewModelのスコープについてご紹介。

## sharedViewModelとは?

前述の通り、ViewModelを**Fragment間で**共有できるViewModelをインジェクトする。
と、今まで思っていた。

というのも実はこの`sharedViewModel()`、インスタンスを共有するスコープがデフォルトでActivityになっているらしい。
中の

元記事を表示

Androidの自作ライブラリの処理実行時にNoClassDefFoundErrorが起きる

## 概要

– 自作ライブラリの処理の実行時に、NoClassDefFoundErrorが起きる
– 直接の原因は、自作ライブラリをMavenリポジトリにデプロイする際に、自作ライブラリが依存しているライブラリの情報が欠落すること
– 依存ライブラリの情報が欠落するのは、Maven Publishプラグインの設定が間違っているから
– Android公式のMaven Publishプラグインの設定にしたら問題は解決した
– https://developer.android.com/studio/build/maven-publish-plugin?hl=ja
– 特に理由がないなら、公式の設定におとなしく従っておきましょう

## 前提

アプリX、自作ライブラリY、外部ライブラリZがある。
アプリX -> 自作ライブラリY -> 外部ライブラリZの方向に依存関係がある。
自作ライブラリYも外部ライブラリZもMavenリポジトリにホストしている。

## 遭遇したこと

アプリXのビルドは通るが、自作ライブラリY内の外部ライブラリZを使う処理の実行時に、NoClassDefF

元記事を表示

もしあなたが急にAndroidアプリを業務で作るはめになった場合の選択肢(2021年初頭版)

本記事は[Android Advent Calendar 2020](“https://qiita.com/advent-calendar/2020/android”)の2020/12/01分です。

初っ端ということなので、2020年末と2021年頭でのAndroidエンジニアとして初めて業務でやる場合に抑えておいたほうが良い最低限の部分を書いていこうと思います。(ツッコミ待ちです)

# 対象
– 2021年3月ぐらいまでに **!!業務!!** でAndroidアプリを作らされる事になった可愛そうな人が居たとします
– この人は手続き型言語でオブジェクト指向プログラミングができる知識があり、Androidアプリもなんとなく趣味で作ったこともあるぐらいのレベル感です~~(なので上長からいきなりお前Android担当なと言われた)~~
– 最低限のAndroidアプリの作成の知識はあるものとします(画面の表示にはActivityがいるよとかは書かない)
– ゲームは対象外です
– 業務でAndroidアプリを作ることを想定しています(≠趣味)
– toB toCどちらを作るにして

元記事を表示

Android Studioおすすめプラグイン

# はじめに
今回はAndroid Studioのおすすめプラグインを紹介します。

# Save Actions
[Save Actions](https://plugins.jetbrains.com/plugin/7642-save-actions)

こちらは自動保存時に自動でコード整形やimportの最適化をしてくれます。
Android Studioのコード整形はcommand+option+Lなのですが、忘れることが多いです。
また使用しないimportを消すことはできません。

そんな時にSave Actionsはまじで役立ちます。
特にチーム開発の時にこの人のこのインデント気に入らない、import消し忘れが治らないなどなどの悩みがなくなります。

# Nyan Progress Bar
今回はこれが紹介したかっただけです。

[Nyan Progress Bar](https://plugins.jetbrains.com/plugin/8575-nyan-progress-bar)

ビルド時やプロジェクトの読み込み時に猫が走ってくれます。
とにかく可愛いニャンニ

元記事を表示

GNSS(GPS)と「高さ」の話

# はじめに

GNSS(GPS)を使った位置取得は、人類の大いなる進歩です!
我われはもう道に迷わないのです。([NEVER LOST AGAIN グーグルマップ誕生](https://www.amazon.co.jp/dp/B07K76331B/) なかなか面白い本でした。)
しかしながら、地図で自分の場所がわかって便利という以上のことを考えるためには、様々なこの分野特有の背景知識を必要とします。
本稿では、「高さ」というものに注目して、なんとなく常識だと思っていた概念の裏を見ていきましょう。

# 「高さ」という概念について

皆さんは、高さという概念について、どのようにとらえていますか?
富士山は3776mだし、東京タワーは333mでスカイツリーは634mという有名な数字は出てくる人が多いでしょう。
富士山の数字は標高の数字で、東京タワーやスカイツリーは所在地の標高からの差分なので、若干富士山の数字とは基準が違うことになります。

この基準というところが高さを考えるうえで重要になってきます。

ちなみに太陽系で最も高い山は火星のオリンポス山で、地表からの高さは実に約27000m

元記事を表示

THETAの姿勢を利用し、スマホなし設定を可能にする

この記事は [RICOH THETA Advent Calendar 2020](https://qiita.com/advent-calendar/2020/theta) の初日記事です。
このアドベントカレンダーはどなたでも参加できます(コミュニティに入る必要はありません)
まだまだ隙間が開いています、THETAプラグインに限らずRICOH THETAにまつわる色々なことで参加して頂けると嬉しいです!

## はじめに

リコーの @KA-2 です。

弊社では[RICOH THETA](https://theta360.com/ja/)という全周囲360度撮れるカメラを出しています。
RICOH THETA VRICOH THETA Z1は、OSにAndroidを採用しています。Androidアプリを作る感覚でTHETAをカスタマイズすることもでき、そのカスタマイズ機能を「プラグイン」と呼んでいます(詳細は本記事の末尾を参照)。

今回は、カメラ本体の姿勢を利用してRICOH THETA Z1の操作系を拡張します。RICOH THETA

元記事を表示

【Android / Kotlin】RecyclerView セルのクリックイベント(画面遷移+データ受け渡し)を実装

# はじめに
リサイクラービューでセルをクリックしたときの処理を実装した際に学んだことを記事に残します。
この記事は以前書いた記事(↓↓)に続く内容となっております。
[【Android / Kotlin】RecyclerView で一覧画面を実装](https://qiita.com/tkmd35/items/0602ef84aa098e1e4f63)

# サンプルアプリの概要
以前の記事で作成した書籍一覧画面のセル(行)をクリックすると書籍情報を表示する画面に遷移させるというもの。
※ 一覧に全て同じサンプルデータを表示していることと、同じ要素を異なるフラグメントで少し表示を変えているだけです。あくまで学習用のサンプルアプリ作成しただけなので各所至らない部分がありますがお許しください。

**一覧画面**

**セルクリ

元記事を表示

Identifying Performance bottlenecks in runtime of TensorFlow Lite models using Android Trace Api

In this article, we will introduce Android Tracing tools to capture internal events from the TensorFlow Lite interpreter which can help us identify potential issues in performance of the models.

This article assumes you know how to use Android studio to build and run apps on mobile devices.

## Discussion Topics

– What is System Tracing in Android?
– Different tools to capture Trace
– How to record TensorFlow Lite events
– How to use the System Trace data

## What is System Tracing in Android?

元記事を表示

MVVM+Repositoryのアーキテクチャを使っています②

#この記事は
・前回([MVVM+Repositoryのアーキテクチャを使っています①](https://qiita.com/mi_iroha/items/9d4da0c1a4f76864eaab))の続きです。

#もくじ
今回はViewModelとRepositoryの部分について書いていきます。![スクリーンショット 2020-11-29 212627.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/906559/e1257630-2660-6b81-efc4-1573b3948adf.jpeg)
②はViewModelから非同期処理で`async{}.await()`や`withContext()`を使ってRepositoryにある関数を呼び出します。Repositoryにはデータベース(今回はFirestore)にアクセスする処理が直接かいてあり、`resume()`という関数で処理の結果を再びViewModelへ返します(⑤に当たる)。便宜上少しだけ⑥のRxRelayやLiveDataについて

元記事を表示

【Android】TabLayoutのIndicator色をtabごとに設定

`setSelectedTabIndicatorColor`が非推奨になったので、`addOnTabSelectedListener`を使用。

“`MainActivity.kt
tab_layout.addOnTabSelectedListener(object : TabLayout.OnTabSelectedListener {
override fun onTabReselected(p0: TabLayout.Tab?) {}
override fun onTabUnselected(p0: TabLayout.Tab?) {}
override fun onTabSelected(p0: TabLayout.Tab?) {

元記事を表示

React Nativeのメリット・デメリット

#はじめに
先日、React Nativeを使った個人開発アプリをリリースしました。
そこで、この記事ではReact Nativeでアプリを開発してみて良かった点、良くなかった点を紹介したいと思います。

「React Nativeを始めようかな」と考えている人の役に立つことができれば嬉しいです。

#メリット❶ 学習コストが少ない
1つ目のメリットは学習コストが少なかったことです。
私は今回のアプリを開発する前は、JavaScriptのライブラリであるReactでWebアプリケーションの開発を行っていました。
React Nativeはコンポーネントの概念などReactと共通している部分が多いので、非常に開発に取り掛かりやすかったです。
Reactを使用してWebアプリケーションの開発を行っている方であれば、React Nativeの学習は参入障壁が非常に低く、取り組みやすいと感じます。

#メリット❷ コードの修正が簡単
2つ目のメリットはコードの修正が簡単なことです。React Nativeは、ホットリロード機能があるため、自分が書いたコードを保存すれば、自動でリロードしてくれま

元記事を表示

firebaseのエラー”Unhandled Exception: PlatformException(sign_in_failed, com.google.android.gms.common.api.ApiException: 10: , null, null)”の解決策

#firebaseを使ったgoogle認証
flutterでfirebaseauthを使ったgoogle認証を実装しようとしたら、
android環境で以下のようなエラーがでた。

“`
E/flutter ( 4434): [ERROR:flutter/lib/ui/ui_dart_state.cc(177)]
Unhandled Exception:PlatformException(sign_in_failed,com.google.android.gms.common.api.ApiException: 10: , null, null)
“`

色々ググってみたら、fingerprintを登録すればいいと書いてあるので、
https://developers.google.com/android/guides/client-auth
の言う通りに下記を実行したけどうまくいかない、、、

“`
keytool -list -v \
-alias androiddebugkey -keystore ~/.android/debug.keystore
“`

#最終的な解

元記事を表示

1行編集で自分のプロジェクトでDaggerのAnnotation ProcessingをAndroid Studioでデバッグする

Daggerが内部でどんなモデルを作ってどんな処理をしているんだ。。ってなったり、エラーになって、中身のコードを読みにいって、この変数に何が入っているんだろう。。ってなったりすることが稀にあるのでメモしておきます。

appモジュールなどでcompileOnlyでkaptで使うコンパイラの依存関係を追加して、Android Studioが使っていデバッグしたいコードを見られるようにします。プロジェクトでの編集はこれだけです。デバッグでの利用が終わったら消してください。

“`kotlin
dependencies {
// compileOnlyで追加する
compileOnly ‘com.google.dagger:dagger-compiler:2.30.1’
// hiltなら以下など
compileOnly “com.google.dagger:hilt-android-compiler:2.29.1-alpha”
}
“`

デバッグしたいコードをcommand + option + oなど(macでのFind simbolのショートカッ

元記事を表示

ChromeCustomTabsでできること~ダークテーマ対応~

今更の話題ですが、CustomTabsIntentにダークテーマ用メソッドが増えていることに気づき、どういうことができるのかを今一度整理してみようと思います。

ダークテーマ対応のメソッドについては、androidx.browser:browser:1.2.0で追加されています。
https://developer.android.com/jetpack/androidx/releases/browser#1.2.0

検証用のアプリは[こちら](https://github.com/ohmae/custom-tabs-sample)、また、CustomTabsのインターフェースを実装した、というか、それ以外の機能の無いブラウザーのソースコードは[こちら](https://github.com/ohmae/custom-tabs-browser)。いずれもMIT Licenseで公開していますのでご参考まで。

また、CustomTabsの機能の中には説明が全く無い、もしくは、あってもコメント程度で、どうやって使うのか分からないメソッドや、どういう意味があるのか分からないコールバックと

元記事を表示

Flutter入門メモ:開発環境構築編

## 経緯

久々に新規でモバイルアプリでも作ろうかと思い、
一人で趣味で作るレベルだと、Swift・Kotlinでそれぞれ構築するのは掛けられる工数的に現実感が無いので、
1ソース系を試してみようかと。

1ソース系は他にも選択肢がありますが、
React Nativeはなんか好みではないのと、Apache Cordovaは嫌な思い出しかないので、
流行ってるFlutterでやれないかなと、[公式](https://flutter.dev/docs/get-started/install)を見ながら少し試してみる事にしました。
今回は開発環境までのメモ。

## 確認環境

* macOS Catalina
* Essential Essential Phone PH-1 (Android 10)

### 前提

* [Homebrew](https://brew.sh/)がインストールされている。

※今回確認を実施したMacでは、XcodeやIntelliJ、VS Codeが予めインストールされています。

## 手順

Flutterのインストール。

“`shell
$

元記事を表示

【Kotlin】DialogFragmentからActivityへ値を渡す

###はじめに
AndroidアプリでDialogFragmentを実装する際、普通の?(はい、いいえの二択のヤツ)ダイアログではなく、EditTextなどを含むダイアログを作成しその値をActivityへ渡す方法です。
やり方はいくつかあるらしいのですが、今回は新しくインターフェースを実装するやり方です。
Fragment自体の実装については割愛する部分が多めです。
おかしな所があれば教えていただけると幸いです!

###構成

MainActivity.kt:Fragmentの呼び出しとFragmentから受け取った値を表示するだけ。
CustomDialogFragment.kt:ダイアログ用のFragmentです。
dialog_layout.xml:EditTextを含むダイアログ用のレイアウトファイルです。

###レイアウト

先にレイアウトを実装しておきます。
MainActivityはなんでも良いので割愛します。
dialog_layout.xmlはres/layout下に作成します。

“`xml:dialog_layout.xml

元記事を表示

MotionLayoutでアニメーションさせるイメージを掴む

[Life is Tech ! #2 Advent Calendar 2020](https://qiita.com/advent-calendar/2020/life-is-tech-2) 1日目の記事です?

## はじめに
– ゴディバです!
– 2020 LiT!#2アドベントカレンダー1日目はAndroidの記事になります!
– これを読めば誰でもMotionLayoutを使えるようになることを目指しました!
– いまさらMotionLayout・・・?
– **はい!!!**

## なにやんの
– ようやく`ConstraintLayout 2.0`が安定版になったこともあり、改めてMotionLayoutを使ったアニメーションの簡単なAndroidサンプルアプリを作ります
– 「**え、これでアニメーションできるの。ちょっとMotionLayout使ってやろうかな**」って思ってくれたら僕の勝ちです

## MotionLayoutとは
– `ConstraintLayout 2.0.0`から使えるようになったレイアウト
– 得意技はアニメーションとそのモーショ

元記事を表示

AndroidのRecyclerViewでフォーカスを中央にキープする

AndroidのRecyclerViewでフォーカスを中央にキープする必要があり、ググったのですが日本語の記事がなかったので、記事にします。

## やりたいこと
メニュータブを表示する際に、フォーカスを中央にキープする。
※menu1フォーカス中もmenu2フォーカス中もセンターにキープする。
 

## ポイントは3つ
– HorizontalGridViewを使う。(縦の場合はVerticalGridView)
– windowAlignmentをWINDOW_ALIGN_

元記事を表示

KeyStoreのjksファイルを復元する方法

拡張子jksは、KeyStoreファイルです。(ここではAndroidアプリ開発で利用)

CIの環境変数に入れようと思ったところ、中身がバイナリでした。

## 方法

以下でテキストにデコードできます。

“`sh
openssl base64 -A -in .signing/release.jks
“`

自分の場合は2764文字のテキストが出力されました。

CI上では、↑で出力されたbase64テキストを環境変数に設定して、
以下のようにまたjksにエンコードして使うのが一般的のようです。

“`sh
echo $KEYSTORE_BASE64 | base64 -d > .signing/release.jks
“`

## note

タイトルはよく知らない人(自分)がこんなキーワードで検索する。というのを考えて設定しました。

中身自体はいろんな記事にありますがQiitaはピンポイントで索引できるといいなと思いました。

元記事を表示

Resources – Sams Class

#日本人
SAMS CLASSさんと共有したいと思います。
お楽しみください。
https://translate.google.com/translate?sl=en&tl=ja&u=https://samsclass.info

サムスクラスオールドリサーチ:
https://translate.google.com/translate?sl=en&tl=ja&u=https://samsclass.info/old-research.htm

サムスクラスオールドクラス:
https://translate.google.com/translate?hl=&sl=en&tl=ja&u=https%3A%2F%2Fsamsclass.info%2Fold-classes.html

サムスクラスワークショップ-モジュール環境は、連邦政府の標準品質のワークショップに大学レベルのトレーニングを提供します。知識と知恵。

https://translate.google.com/translate?sl=en&tl=ja&u=https://samsclass.info/w

元記事を表示

OTHERカテゴリの最新記事