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

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

非推奨のAPIを使用またはオーバーライドしています

#何が問題か
android環境下でflutter runしたら
「非推奨のAPIを使用またはオーバーライドしています」となった。

#解決策
minSdkVersion を21から23に変更

元記事を表示

Kotlinアプリ開発はじめます

####~目次~

[1.はじめに](#1.はじめに)
[2.概要](#2.概要)
[3.開発環境](#3.開発環境)

##1.はじめに
はじめまして、たけしです。
KotlinでAndroidアプリ開発を始めました。
プログラミングの学習は趣味で少しばかりしていましたがアプリ開発ははじめてです。
よろしくお願いします:)

##2.概要
AndroidStudioで開発を始めたのですが、開始早々行き詰ってばかりです。
(調べても出てこないorでてきても英語ばかり、、)
そんなわけで同じ悩みを持つ方を減らすため、また備忘録としても僕が直面した問題を中心に記事を投稿していけたらなと思っております。

Webで何かを投稿するのはこれが初めてなので、文章も拙いかもしれませんが、温かい目で見守っていただけたら嬉しいです。
(改善点などコメントしていただけたら嬉しいです!)

##3.開発環境
何のせたらいいかわからないので現在の開発環境をのせておきます。

– Surface Pro6(Windows10)
– Android Studio(4.1)

(開発環境も何書けばいいのかわから

元記事を表示

(Android) DataBindingを使って静的テキストを表示させてみる

## はじめに
DataBindingの勉強として記録しておく。
今回はテキストを表示するだけの初歩中の初歩。

## DataBindingの導入
appのgradleに以下を追加

“`java:build.gradle
android {
dataBinding {
enabled = true
}
}
“`
## バインドするクラス(User)を用意

“`java:User.java

public class User {
private String name;
private String email;

public User(String name, String email) {
this.name = name;
this.email

元記事を表示

RadioGroupを使ったRadioButtonの双方向データバインディング

双方向データバインディングが必要になって調べたので、備忘録として残しておきます。

# 双方向データバインディングとは
Databindingは、レイアウトファイルに画面に表示するデータをバインド出来る機能のこと。
もう少し乱暴に言うと、あるデータを使うようにレイアウトのxmlファイルでよしなに定義しておいて、アプリ実行時にそのデータをレイアウトにまるっと渡すと、表示に反映する部分のコードを書かなくて良くなるというちょっと便利な手法です。
あんまりやりすぎると逆に可読性下がるのでやり過ぎは注意ですが、便利なので慣れるととても使い勝手が良い機能です。特にLiveDataと組み合わせると、プログラム内で変更した値の表示を反映させるコードを書かずとも反映されるようになるため非常に便利です。

しかし、これは基本的に「表示するデータ」を指定するもので、アプリならばたいていはユーザーからのアクション、入力を何かしら受け付ける画面があると思います。
そんなとき、ユーザーが入力したデータもまた、LiveDataに自動的に入れたいなーという時に使うのは、「双方向データバインディング」です。**データ→

元記事を表示

僕たちはどのようにしてViewModelに通知すべきなのか

# はじめに
みなさま、値の受け渡しはどうしてますか?
私は去年までベタベタな組み込みC言語ユーザで、戻り値、参照渡しくらいしか使っていませんでした
当然、非同期的なやりとりをしようとすると詰みます

ということで私なりに整理したものを共有したいと思います
テーマは、「どのようにしてModelからViewModelに通知すべきか」、です

さて、Androidで一般的なMVVMアーキテクチャでは、アプリケーションはおよそ3層で表現できます
![スクリーンショット 2020-12-28 8.53.15.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/924658/bef99e92-bdf1-71f3-909a-b8fee3b68d40.png)
この時、ViewModelからActivityへの通知はLiveDataを使うのが公式です
LiveDataには通常のObserverに加えて、Activityのライフサイクルを与えられるので、
ViewModelが値を返すときには既にActivityが破棄されてい

元記事を表示

managed Google Playを利用している他組織へアプリの限定公開

この記事は [CBcloud Advent Calendar 2020 22日目](https://qiita.com/advent-calendar/2020/cbcloud)の記事です。

CBcloud 徳盛です。
Kotlin Coroutineの記事を書こうと思いましたが、ちょっと年が明けそうなので一旦保留して、あまりこんな機会ないであろう、最近あった他組織へ限定公開する方法を書きます。

# 背景
managed Google Playを利用している組織から、弊社アプリを組織内で配信したいという話があったので調べた。

# 方法
1. リリース前にGoogle Play consoleの「詳細設定」より「managed Google Play」タブを選択し、「オンにする」を選択する
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/124149/451ea191-8e70-ddfa-077b-4a032c374367.png)

2. 非公開アプリへのアクセス権より組織を追加し、

元記事を表示

AndroidのChromeでリンクを押した時につく、青色を消す。

AndroidのChromeでリンクやボタンを押した時、リンク領域が青色になる。
これは、タップ時のハイライトカラーを透明にすることで解消できる。
全てのセレクタに適用して、解決した。

Android

“`css:style.css
* { -webkit-tap-highlight-color: rgba(0, 0, 0, 0) }
“`

元記事を表示

【Android】RecyclerView で無限スクロールを実装する

# やりたいこと

RecyclerView で作ったリストに無限スクロールを実装してみます。

API でデータセットを取得してリスト表示するような機能を想定しています。

画面生成時にリストを 10 件しておき、リストの下端までスクロールしたタイミングで 10 件ずつ追加で表示するサンプルアプリを作っていきます。

最終的に作成したアプリは Github で公開していますので参考にしていただければと思います。

https://github.com/yudai0308/infinite_scroll_sample

# 実装手順

## 1. レイアウトファイル作成

RecyclerView のレイアウトと、リストに表示させる1行分のレイアウトを作成します。

“`activity_main.xml

元記事を表示

Kotlin の Coroutine で suspend 関数を理解する

先日、[ドリーム・アーツ](https://recruit.dreamarts.co.jp)では、[売場ノート](https://shoprun.jp)というアプリを Android に対応させた。

全面的に Coroutine を使って非同期処理を書いたので、そのとき理解のために実験した内容について備忘がてら書いておく。

## 前提

Kotlin 1.4.21
Android Studio 4.1.1

“`gradle
dependencies {
implementation ‘org.jetbrains.kotlinx:kotlinx-coroutines-android:1.3.9’
}
“`

## Coroutine の動作をおさらいする

launch とか async/await がどういう順番で呼び出されるかといったことはここでは話題とはせず、Coroutine の利用シーンに絞って、Android アプリ内でどのようにコードが動くのかといったことを記述する。

Coroutine の典型的な利用シーンとして、何らかのユーザーの操作をトリガーとして

元記事を表示

KotlinでRoomデータベース

KotlinでRoomデータベースを使用してみたので、覚書。

全コード:
https://github.com/CoffCookie/memo

Roomとkaptが必要だったため、2つを指定。

最新版は下記

Room:
https://developer.android.com/training/data-storage/room?hl=ja

kapt:
https://kotlinlang.org/docs/reference/kapt.html

私の場合、kaptはversion指定すると上手く行かなかったため、version指定なしで作成している。

“`app/build.gradle
plugins {

id ‘org.jetbrains.kotlin.kapt’
}

dependencies {

def room_version = “2.2.5”
implementation “androidx.room:room-runtime:$room_version”
kapt “androidx.room:r

元記事を表示

[Jetpack Compose] 1.0.0-alpha09から変わったこと。

## おすすめ

– Android Studio Arctic Fox Canary 2
– https://developer.android.com/studio/preview

前はBetaバージョンを使ってましたが、
最近のバージョンにはCanary Buildに変わって使いましょう。
ComposeのPreviewはAndroud studio Beta Buildバージョンでは使わなくなりました。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/137182/b08ca87a-108d-106a-d699-93edd743d9d0.png)

## Lib Version

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/137182/a3d3c76a-51fc-f6f3-42ce-5e77b85eb3d2.png)

https://mvnrepository.co

元記事を表示

【Dart】Mapのvalueを使ってソートする

Mapのvalueでソートしたい事があったので調査しました。

[SplayTreeMap class](
https://api.dart.dev/stable/2.10.0/dart-collection/SplayTreeMap-class.html)
SplayTreeMapのfromにソートしたいmapとcompareを渡せばソートできるみたいです。

下記のようなオブジェクトを作成しました。属性idでソートする予定。

“`Dart:Object
class Employee{
int id;
String name;
Employee(this.id,this.name);
}
“`
最初の並び順は下記の様な感じです。

“`Dart:unSort
Map map = Map();
map[‘hoge’] = new Employee(1, “sato”);
map[‘huga’] = new Employee(3, “tanaka”);
map[‘piy

元記事を表示

【Android】MVVMをなんとなく理解した時の備忘録

MVVMをなんとなく理解したときの備忘録です。
MVCとかMVPを知っているとこんなもんかって感じです。
プロジェクトによって、使い勝手を良くしてカスタマイズすると良いと思います。

##MVVMアーキテクチャ
* M | Model
* V | View
* VM| ViewModel
* MVPのPresenterのような役割
* ViewModelは、明示的にViewを更新しない。(DataBindingで自動的に反映)
* 特定のUI要素(TextViewやImageViewなど)に対して、Bindingする

##MVVMのアプリ基本構成
リポジトリにデータソースを格納し、データバインディングによって自動的にViewを更新するイメージ
Activity1に対して、Fragment 1…*
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/165793/f17fbcfe-9869-13ea-1eda-d8cdfe3285d0.png)

##ViewModel

元記事を表示

AndroidAppLinksでアプリを開く

## 概要
業務でAndroidAppLinks(以下AAL)を使ったのでまとめてみます。
主な内容は以下の通り
– DeepLinkとの違い
– assetlinks.json の置き場所
– 署名毎の対応
– 反応して欲しいURLの正規表現の書き方とその限界について
– 他のアプリも同じURLで反応する場合の挙動

## DeepLinkとの違い
https://developer.android.com/training/app-links?hl=ja
DeepLinkで複数のアプリが反応した場合、どのアプリで開くか尋ねられる。

AALではどのアプリで開くか尋ねられることなくアプリを直接起動させることができる。

## assetlinks.json の置き場所
自分の持つドメインの直下に `.well-kno

元記事を表示

【Flutter】遭遇したエラー&&解決策まとめ②

## 前回
– [【Flutter】遭遇したエラー&&解決策まとめ](https://qiita.com/umaibou1126/items/050ee66f94f10ec114df)

## 参考文献
– [【flutter初心者】ListViewやGridViewを入れ子にするには(Vertical viewport was given unbounded height エラー)](https://qiita.com/code-cutlass/items/3a8b759056db1e8f7639)
– [[Flutter]TextFieldタップでA RenderFlex overflowed by pixels on the bottom. が出るときの対処法](https://qiita.com/welchi/items/e9c907828e553d448269)
– [【Flutter】キーボード表示時の RenderFlex overflowed エラーを解消](https://yaba-blog.com/flutter-renderflex-overf

元記事を表示

【Android】ラジオボタンを追加する方法

#プログラミング勉強日記
2020年12月26日
Androidアプリ開発でラジオボタンを作成したのでその方法を簡単にまとめる。

#ラジオボタンを利用するときに使うクラスとメソッド

– RadioButton
– RadioGroup
– onCheckedChangeListener
– void check(int id)
– int getCheckradioButtonId()
– void clearCheck()

 
 RadioButtonはそれぞれの項目に相当するクラス。
 RadioGroupは複数のRadioButtonを持ち、それらの1つだけ選択できる。
 OnCheckedChangeListenerは選択されている項目が変わった時に通知を受ける。
 void check(int id)は引数で指定したラジオボタンを選択するメソッド。
 int getCheckradioButtonId()は選択中のラジオボタンのIDを取得するメソッド。
 void clearCheck()は選択を解除するメソッド。

#ラジオボタンを配置する方法
 レイアウトエディタの

元記事を表示

セグメンテーション(Deeplab)を使用し撮影写真の背景を変えられるアプリを作ってみた

# 概要
ML-Kit For FirebaseでTensorFlow Liteを使ってAndroidアプリに組み込みこもうと、なにか良いネタないかと考え
コロナで旅行行けないので、家で旅行写真とれたらいいんじゃないかと思い付き、勢いで作ってしまいました
人物の写真を撮ると、背景がどこかの観光スポットの写真にいれかわります
※背景はフリー画像素材を使用しています
※ライブラリから背景画像を指定することも可能です

例のごとく、作成したはいいが、半年くらい放置しており、もったいないので、動作原理、開発手順等、簡単に説明をのこしておきます

下記で公開しています(Android 9以上)
https://play.google.com/store/apps/details?id=com.e.ittatumoricamera

ざっくりのアプリの動作は以下のとおりです
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/172093/19ae189b-5d04-98c9-03f2-0d863d47

元記事を表示

LiveDataとListAdapterとRecyclerViewでFirestoreから取得してきたデータを縦にズラズラと表示する方法

#この記事で達成したい目的
Firestoreからデータを取得してこんな感じに表示したい!

#レイアウト
まず、上記画像のように取得したデータを表示したいなぁと思う画面にRecyclerViewをドラッグアンドドロップで配置します。以下は配置したRecyclerViewにlistというidをつけました。

コードでいうとこんな感じ。

“`kotlin:fragment_home.xml

元記事を表示

THETA関連APIのまとめ(2020年版)

## 1. はじめに
激動の2020年もあっという間に年末。年末年始にTHETAを使った開発をしてみようという人のために、開発の仕方をまとめてみた。手軽に試せるようにコマンドなどでの使用例を記載した。公式の仕様は[Developer Documentation](https://api.ricoh/docs/)でまとめられている。

### 動作環境
記事中では以下の環境を中心に動作確認した。

* macOS Catalina (10.15.7)
* RICOH THETA V, Firmware ver.3.50.1

## 2. THETAシリーズと対応API/機能

モデルによって対応しているAPI/機能が異なっており、[ここ](https://api.ricoh/docs/theta-api-introduction/)に詳細が記載されている。

| 発売年 | モデル名 | Web API | USB API | BLE API | UVC対応 | [Plugin対応](https://api.ricoh/docs/theta-plugin/) |
|:—–:|:

元記事を表示

Android アプリを GitHubActions でビルド、単体テストして FirebaseTestLab で UI テストを実行する

まずは yml です。

以下内容で `PROJECT_ROOT/.github/workflows/main.yml` を作成してプッシュすれば GitHubActions の Workflows に追加されます。

“`yml:main.yml
name: CI

on:
push:
branches: [main]
paths-ignore:
– ‘**.md’

jobs:
build:
runs-on: ubuntu-20.04

steps:

– name: Checkout
uses: actions/checkout@v2

– name: Set up JDK 1.8
uses: actions/setup-java@v1
with:
java-version: 1.8

– name: Restore gradle cache
uses: actions/cache@v2
with:
path:

元記事を表示

OTHERカテゴリの最新記事