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

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

【続】2020年版RecyclerViewの使い方 〜リストのアイテムに複数のレイアウトを使う〜

# tl;dr

* [2020年版RecyclerViewの使い方 〜 RecyclerView + ListAdapter + DataBinding + LiveData + ViewModel](https://qiita.com/que9/items/52725c3caf33f2a9b44e) で紹介しなかった、リストのアイテムに複数のレイアウトを使う場合を紹介
* ViewHolderの抽象クラス化が鍵
* `getItemViewType` のoverrideを忘れるな
* ソースコード
* 今回のサンプルのソースコード:https://github.com/quwac/how-to-use-recyclerview-2020/tree/multiple_view_type
* 前回のソースコードとの差分表示:https://github.com/quwac/how-to-use-recyclerview-2020/compare/main..multiple_view_type

# はじめに

[2020年版RecyclerViewの使い方 〜 Rec

元記事を表示

AndroidStudio Debug署名を共有する方法

# 背景
社内開発の場合、デバッグ用端末をチームで使いまわしてデバッグ等行う事が多い。その際、他人のインストールしたデバッグアプリをアップデートインストールしようとすると、署名が違うと怒られる。いちいちクリーンしてからインストール。これが結構面倒だったので対応した。要は署名を共通化すればいい。

# build.gradle 設定

“`
android {
…略…

signingConfigs {
debug {
storeFile file(“debug.keystore”)
}
}
}
“`
debug.keystoreはapp直下においてgit管理させれば良い。

# 余談
デフォルトのdebug.keystoreは以下に格納されており、PCごとに違う。
個人でやってた頃は、こちらのファイルをコピペすることによって、共通化させていた。

* Win : `C:\Users\\.android\`
* Mac : `~/.android/`

元記事を表示

【Androidアプリ開発】初心者からの独学でのおすすめ勉強法

# はじめに
私は、現在大学院修士1回生で、研究をしながら趣味で楽しくサービス開発をしてきました。その中でここ1年半くらいの間は、特にAndroidの開発をメインに行ってきました。その際には基本的には独学で技術を学んできました。そこで、思い返してみると反省していることや、非常にやってよかったことなどが多くあると感じました。
 それを共有することで、__今からAndroidの分野に興味があるけど、どうやって勉強していいのかわからないという人__にとってためになる記事になればいいなと考えています。ちなみに、この記事ではKotlinやJavaでのネイティブアプリ開発についての話になります。

## 始めたてのころ
初めてまずやることのおすすめとしては、動画教材での学習です。よくありがちなのが、最初に大きい本を買って、訳もわからずに挫折してしまったり、なんか分かった気になったけど実際に作るイメージが湧かずあまり意味が無かったと感じてしまうことがあると思います。なので、この段階では実際に動くものを動画というイメージしやすい形で、講師の人と一緒に手を動かしてコードを書くというのが一番良いと思ってい

元記事を表示

AndroidでLocalDateを使おうとしてハマった

AndroidでLocalDateを使いたくて[Java 8+ API の desugar のサポート](https://developer.android.com/studio/write/java8-support#library-desugaring)に従って以下の設定を入れた。

“`
compileOptions {
coreLibraryDesugaringEnabled true
sourceCompatibility JavaVersion.VERSION_1_8
targetCompatibility JavaVersion.VERSION_1_8
}

dependencies {
coreLibraryDesugaring ‘com.android.tools:desugar_jdk_libs:1.1.1’
}
“`

そして、ビルドして、実行すると……**クラッシュ!**

なんでかな〜と思ってググっていたら、
https://issuetracker.google.com/issues/157681341
> Could y

元記事を表示

Android Studioを使ってみる【作成中 タイトルも見合ったものにする】

#目標
Device File Explorerで端末のフォルダ構成を把握できること

#インストール
– 下記からAndroid Studioをダウンロードする
[Download Android Studio and SDK tools ](https://developer.android.com/studio)

– 下記に従ってインストールする
~~[Android Studio をインストールする手順(Windows)](https://akira-watson.com/android/adt-windows.html)~~
[Android Studio超入門――ダウンロード、インストール(Macもあり)、使い方を総まとめ](https://www.atmarkit.co.jp/ait/articles/1709/04/news015.html)
※HAXMはインストールしない

#SDKマネージャーインストール
## SDK Platform
– Android7.0と7.1.1をインストール
~~※実機は7.1.2なので不安あり~~

– Show Package

元記事を表示

Android9 プリインストールデバイスに AOSP11 をインストールしてみた

VANKYO S30というAndroidタブレットにAOSP11(の、有志ビルド)をインストールしてみました。
何点か引っかかるところが合ったのでどなたかの参考になれば幸いです。

※ root化、ROM焼きは brick(文鎮)化する恐れのある操作でメーカ保証対象外です。この記事を読んで何かなさる際はご自身が何をしようとしているか十分に理解されてから実施されることをオススメします。筆者は何ら責任を負いません。

> このガイドは adb, fastboot の基本的な導入方法や使用方法は全て端折ってあります。
このあたりの記事をお探しの方は他を当たった方が良さそうです。 adb, fastboot は基本的にどんなデバイスでも同様です。

## 何はともあれ bootloader oem unlock
ひとまず、 bootloader を unlockせねば始まりません。
VANKYO S30は unisoc bootloader なのでこのガイドに従います。
https://forum.hovatek.com/thread-32287.html

基本的にこの指示通りやれば良いの

元記事を表示

UnityIAPでAndroidのReceipt情報などを持ってくるときの注意点

# tl; dr
“`cs
public static void ProcessReceipt(Product item)
{
var receipt = Jsonをデシリアライズする処理(item.receipt);

var payload = Jsonをデシリアライズする処理(receipt.String(“Payload”));

// json Google によって提供される文字列にエンコードされた JSON
// signature Google によって提供される JSON パラメーターの署名
var json = payload.String(“json”);
var sig = payload.String(“signature”);
“`

# 言いたいこと
諸悪の根源: https://docs.unity3d.com/ja/current/Manual/UnityIAPPurchaseReceipts.html

`Product` の `receipt` には JSON 文字列が入ってくるが、

元記事を表示

【Android】Spock ADBが便利だったのでご紹介

Android Studio(IntelliJ IDEA)のプラグイン「Spock ADB」がAndroid開発において便利だったのでご紹介したいと思います。

https://plugins.jetbrains.com/plugin/11591-spock-adb

# インストール
インストールに関しては、一般的なプラグインと同様にAndroid StudioのPluginsから検索してインストールできます。

インストールが完了すると、サイドバーに「Spock ADB」の項目が追加され、Viewが表示されます。

元記事を表示

AndroidStudioでstrings.xmlを開かずにstringのresourcesを定義する

AndroidStudioでstringを定義するとき、これまではstrings.xmlを開いて定義していたのですが、**Extract string resource**という機能を使うことで、**layoutファイルの中だけでstringリソースを定義できる**んですね。

やり方は簡単で、以下の手順でできます。手順にするとステップ数がありますが、実際は速攻でできます。gifもご覧ください。

1. レイアウトファイルの `android:text=”hogehoge”`の箇所にカーソルを当てる
2. 表示されたダイアログの**Extract string resource**を選択する
3. `Resource Name`の箇所にはstringのリソース名(例:`hoge_label`)を、`Resource value`のところにはstringの値((例:`hogehoge`))を入れる
4. 対象stringファイルのディレクトリなどを選択
5. OKを選択
6. レイアウトファイルで`android:text=”hogehoge”` が `android:text=”@st

元記事を表示

[Flutter] flutter hooks で簡単にPageViewのアニメーションを作成する [Instagram UI トレース]

#はじめに
初投稿となります。お手柔らかにお願いします。

今回は、タイトルの通り、インスタでストーリーを移動するときの、四角い箱を回すようなUIをFlutterで作成していきたいと思います。
この記事が皆さんのお役に立てると嬉しいです。

#パッケージ
今回の自分が使用したパッケージは以下の通りです。

“`yaml:pubspec.yaml

dependencies:
flutter_hooks: ^0.15.0
hooks_riverpod: ^0.12.1
flutter:
sdk: flutter
“`

状態管理用に[riverpod](https://pub.dev/packages/riverpod)を入れています。(今回は使いません)
また、コードを簡単に書くために[flutter_hooks](https://pub.dev/packages/flutter_hooks)も入れています。

ただ、hooksを使ったことがない人でも、ドキュメントを読めばStatefulWidgetに置き換えることができると思います。

# 完成図

今回の

元記事を表示

AndroidのBillingLibrary2.1.0未満はjcenterにしかない

先日、mavenリポジトリの一つである[jcenterが停止するアナウンス](https://jfrog.com/blog/into-the-sunset-bintray-jcenter-gocenter-and-chartcenter/)がされましたよね。

現時点でのjcenterの停止日は2022/02/01となっていますが、当初は2021/05/01とアナウンスがあり、焦った方も多いのではないでしょうか。

ということで、ずっと放置してた個人プロジェクトのbuild.gradleから試しに`jcenter()`を削除し`mavenCentral()`に置き換えたところ、エラーの中に以下を発見

“`
Could not find com.android.billingclient:billing:1.0.
Searched in the following locations:
– https://dl.google.com/dl/android/maven2/com/android/billingclient/billing/1.0/billing-

元記事を表示

NavigationDrawer(サイドメニュー)を実装する

# はじめに
KotlinでNavigationDrawerを実装する方法を忘れないために、メモがてら書いています。
コードを簡潔にするため、バインディングは使用していません。

# 環境
– Android Studio 4.1.1
– kotlin 1.4.10

# 事前準備
### 1. 画面の作成
各画面はフラグメントで実装するため、MainActivity以外に今回は

– **HomeFragment**
– **ProfileFragment**
– **SettingsFragment**

を用意する。

### 2. Navigation Graphの作成
画面遷移を管理するNavigationファイルを作成する。
**res -> New -> Android Resource File**

![スクリーンショット 2021-02-09 15.13.55.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/663839/70b215a8-6d80-d6ab-02f4-fd6be3

元記事を表示

RecyclerViewにDataBindingを導入してみた

## はじめに
前回作成したRecyclerViewにDataBindingを導入してみた。
前回記事https://qiita.com/kilalabu/items/da1aae6d73177fec9e98

## デモアプリ
![recyclerview.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/670405/8e1d05fa-ba7c-260e-bf03-70e20b242f00.gif)
## コード実装
### Layout
“`xml:recyclerview_cell_item.xml



【Flutter】iOS/Android/WebでFirebase Firestoreを使えるようにする。

# はじめに
昨年後半よりFlutter入門して社内用アプリを作っています。
今回はFirebaseのFirestoreを使えるようにします。

# 更新履歴
2021.2.11 初回投稿

# 環境
– macOS Big Sur(11.2)
– Flutter (Channel beta, 1.26.0-17.2.pre, on macOS 11.2 20D64 darwin-x64,
locale ja-JP)
– Android toolchain – develop for Android devices (Android SDK version 30.0.3)
– Xcode – develop for iOS and macOS
– Chrome – develop for the web
– Android Studio (version 4.1)
– VS Code (version 1.53.1)

# 参考にしたサイト

– [Cloud Firestore を使ってみる | Firebase](https://firebase.googl

元記事を表示

【Android】広告出稿後の効果まとめ

#はじめに
2019年に趣味で作ったAndroidアプリを公開しましたがさっぱりインストールされないので2020年5月から広告を出稿しました。
半年ちょっと経過したのでその効果と気づいたポイントをまとめます。

なお複数アプリを公開していますが出稿しているアプリは1本のみです。
ツール系のアプリです。

#目次
– (補足)単語の説明
– 出稿した広告の内容
– インストール数
– CV率やクリック単価など
– 気づいたポイント
– CVが増えたタイミング
– CVが減ったタイミング
– CVに特に影響なかったもの
– ストアの掲載順位
– (余談)収益について
– まとめ

#(補足)単語の説明
いきなり補足ですが、記事内で用いている単語の説明をしておきます。
分かる方は読み飛ばして大丈夫です。

| 単語 | 意味 |
|:—————–|:——————|
| クリック率 | 広告を見た人の内、どのくらい人がクリックしたかの割合です。

元記事を表示

Emulator: emulator: ERROR: unknown skin nameと言われたときの対処法

# 現象
エミュレーターを起動しようとしたらこのような`EvengLogウィンドウ`にメッセージが表示され、エミュレーターが起動しませんでした。

“`console
Emulator: emulator: ERROR: unknown skin name ‘pixel_2’
“`

# 解決方法

一度AVDManagerで該当のエミュレータを編集(Edit)し、そのまま何も変えずに保存すると、あら不思議起動するようになります。

# その他

CatalinaにMacOSを今更ながらアップデートしたのですが、HDD直下のフォルダにはアクセス不可になったようで、開発環境が全てアウトになってしまいましたorz

恐らく上記のエラーも、パスを色々変えた影響かなあ・・・?

しかしCatalinaに上げたらビルドがむちゃくちゃ遅くなった気が・・・:fearful:

現場からは以上です。

元記事を表示

[Android] Kotlin の sealed class でステートマシン

“`kotlin
class MainFragment : Fragment(R.layout.main_fragment) {

override fun onResume() {
super.onResume()

lifecycleScope.launch {
// 命令を与える例
MainFragmentState.currentState.onHoge(this@MainFragment)

// 現在のステータスを確認する例
when {
MainFragmentState.currentState.isIdle() -> {}
MainFragmentState.currentState.isState1() -> {}
MainFragmentState.currentState.isState2() -> {}

元記事を表示

JSONパースするのにKotshiを使ってみた

##何故今回Kotshiを使うのか
KotlinでJsonパースするのにGSONを以外のライブラリを検索してみると
JacksonとMoshiを見つけました。
その上で[ベンチマーク](https://www.ericdecanini.com/2020/10/13/benchmarking-gson-vs-jackson-vs-moshi-2020/)を見るとJackson or Moshiが良さそうでした。
さらにMoshiについて調べているとMoshiよりも早い(らしい?)Kotshiを見つけたため
JackSonと同じぐらいのMoshiよりも早いならより良いだろうとKotshiを使うことにしました。

##環境
Android Studio 4.1.1
kotlin 1.4.21
kotshi 2.2.3
moshi 1.9.3

##Gradleを使って必要なものを準備
gradle(:app)に以下を追加

plugins {
(略)
// 以下追記
id ‘kotlin-kapt’
}

andr

元記事を表示

MaterialDatePickerで未来日を選択できないようにする

## やりたい事
MaterialDatePickerで日付を選択するとき、デフォルトでは過去/未来含めて全ての日付が選択できる。

ここで、「未来日は選択させたくない」という要件が出てきたとき、選択日に制限を加える必要がある。

## 解決方法

`DateValidator`で制限を作成して、MaterialDatePickerの`CalendarConstraints`にセットする。

“`kotlin
MaterialDatePicker.Builder.datePicker().apply {
// 未来を選択させない制限
val dateValidatorMax = DateValidatorPointBackward.before(Date().time)

// 開始日を制限したいなら DateValidatorPointForward を使う
// val dateValidatorMin = DateValidatorPointForward.from

元記事を表示

2021/1 Google Play | AppStore 対応期日カレンダー

![eyecatch_2101StoreCalendar-1.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/218415/2380f173-a80f-ac3c-e52c-fef2a22c9ffa.png)

※ 本稿は [Tech Inside Drecom](https://tech.drecom.co.jp/?_src=qiita) に掲載された記事、「[2021/1 Google Play | AppStore 対応期日カレンダー](https://tech.drecom.co.jp/googleplay-appstore-calendar-202101/?_src=qiita)」の Qiita 出張版です。

こんにちは、SRE部クライアントグループの Smith です。
SRE というとサーバ・インフラのイメージがありますが、なぜクライアント?っていう部分は別の機会にお話したいと思います。

本稿では SRE部として収集し、社内共有している`対応期日のある Google Play

元記事を表示

OTHERカテゴリの最新記事