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

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

FlutterのGoogle Fontsプラグインgoogle_fontsを解析

# はじめに

この記事は[Flutter #2 Advent Calendar 2019](https://qiita.com/advent-calendar/2019/flutter-2)の12日目分です。

今年もすぐに枠が埋まってしまっていたのでFlutter Advent Calendarに参加する予定はなかったのですが、11日分に引き続き12日枠が投稿されずに空いていたのでちょうどFlutter Interactでgoogle_fontsプラグインが公開されたので急遽この記事を書くことにしました。

Flutterの最新情報に興味がある方はFlutterウィークリーもよかったらご覧ください
https://qiita.com/tags/flutterweekly

# google_fontsとは?

先日ブルックリンで開催されたFlutter Interact 2019で発表されたプラグインで、あのGoogle Fontsを簡単に利用できるようになります。今までのようにフォントをアセットとして組み込む必要がなくなるのでより軽量でデザイン性に優れたUIデザインを組むことが出

元記事を表示

MotionLayoutのハマりどころ

この記事は[第二のドワンゴ Advent Calendar 2019](https://qiita.com/advent-calendar/2019/dwango2)の16日目の記事です。
AndroidのレイアウトとアニメーションをMotionLayoutで作ったら色々ハマりました、という記事です。

## 前置き
MotionLayout(が含まれるConstraintLayoutパッケージ)はまだBetaバージョンのため、今後の更新によって記事の内容が適用できなくなる可能性があります。ご注意ください。

この記事は、 `ConstraintLayout 2.0.0 beta 3` をベースにして書かれています。

また、「まだこれはできません」「こうするとバグります」などと書きますが、全てを複数の環境で確認したわけではないので、誤謬が含まれている可能性があります。
「知らないだけでできる」「こっちでは動く」「おま環」などがあれば教えて下さい。切実に。

## MotionLayoutのかんたんな紹介
ConstraintLayout とは、UIの要素間に制約を設定することで画面レ

元記事を表示

フォースダークを支える技術でダークテーマ用colors.xmlを生成する

## TD;DL
– Android #2 アドベントカレンダーの15日目の記事です。
– 下記レポジトリのスクリプトを実行すると生成できます。
https://github.com/sdsd08013/dark_color_gen

– layoutのcolor指定方法に強く依存するので基本的にはこれだけでダークテーマ対応が済むことはありません。

## はじめに
Android10から導入された機能にフォースダークというものがある。開発者向けオプションにあるフォースダークのオーバーライドという項目がそれにあたり、このオプションをONにした状態で既存のアプリを起動すると比較的高いクオリティでダークテーマを適用する技術である。この記事ではフォースダークを支える技術を利用して既存のcolors.xmlからダークテーマ用のcolors.xmlを生成する。

## フォースダークを支える技術

#### Lab色空間
Lab色空間はCIE1931色空間をベースとして定義された色空間で明度を示す次元Lと補色a*bにより表される。開発時に利用されることで馴染みがあるRGB色空間と比べると次元Lが

元記事を表示

Jetpack Composeをすこし触ってみた

この記事は[フラー Advent Calendar 2019 – Adventar](https://adventar.org/calendars/4155)の16日目の記事です

前日の15日目は[ShinYoshiaki](https://qiita.com/ShinYoshiaki)で、[Reduxをenjoyableにする](https://qiita.com/ShinYoshiaki/items/c1d871e175a89d41442f)でした。

はじめてAdvent Calendarを書きます(あと初めてQiitaに投稿します)

お題自由なので[Jetpack Compose](https://developer.android.com/jetpack/compose)を3時間くらい入門してみました。

ちなみにJetpack Composeはプレアルファです。

今回はテキストと画像の表示、遷移周りを作ってみました。

コードは最後にリンクを置いておきます。

時間が取れなかったので、間違っている部分等はあるとおもいますがご了承ください。

修正や追記する時

元記事を表示

【react-native】参考にできないAndroidのイケてないrender制御

## 主旨
Android限定、レンダリングが正常に動かない現象のパワーソリューションです。
それぞれの原因は仮説ベースになっていますのでご了承ください。

備忘録と、誰かの救済策になればと思って共有します。
もし、具体的な原因、もしくはスマートな解決方法をお持ちの方は(特にカルーセル)
教えていただければ大変うれしいです!

### カルーセルのレンダリングが失敗する

`react-native-snap-carousel` はカルーセルコンポーネントを実現するためのライブラリです。

このコンポーネントで次のようなカルーセルを作ってみます。

スワイプと、ボタンでコンポーネントの表示切り替えができるものです。

“`tsx
const Container = () => {
const [activeInd

元記事を表示

おしゃべりAIがひたすらLive配信するアプリを作った話

# この記事の要旨
所謂、「個人開発で作ったものを紹介する記事」です。
個人開発で「おしゃべりAIがひたすらLive配信するアプリ」を開発&リリースしてみたので、その経緯や開発・運用の紹介をしています。
一部分の専門的な技術に特化した記事ではないですが、個人開発をしながら苦労したことや工夫したことなども織り交ぜているつもりですので、個人開発やアプリ運用に興味のある人や「対話システム」領域に興味のある人の参考になれれば幸いです。

※ この記事は個人開発について書いたもので、所属企業の活動とは関係がありません。(アドベントカレンダーで書いておきながらですが・・・)

# 自己紹介
グロービス でアプリエンジニアとスクラムマスターをしています。
本業と並行して、学生時代から続けている個人開発でのアプリ運用を行なっています。
本業の開発と個人開発の「相乗効果」が大きな成長を生むと感じ、このスタイルを続けています。

「個人開発」の魅力については、私が強く影響を受けている先輩エンジニアであり、個人開発仲間である@masaibarさんのQiita記事「[個人開発のすヽめ](https://qi

元記事を表示

GDG DevFest Tokyo 2019 観戦記

# はじめに
12/14(土)開催の`GDG DevFest Tokyo 2019 `行ってきました。
[公式サイト](https://tokyo.gdgjapan.org/devfest2019)

この記事は個人の備忘録になります。

# 参加したセッション
ちょっと大きくて見にくいですが、全体のセッションはこんな感じでした。
![公式ページのガイド](https://tokyo.gdgjapan.org/img/devfest2019/DevFestTokyo2019.png)

今回は、普段業務で使うものはもちろん、
普段触れていなくても来年使いそうな技術のキャッチアップ目的で参加してきました。

## 11:30~ 遅刻+企業ブース周り
~~前日の忘年会で夜遅くまで飲んでいて、当日朝も油断して~~ 遅刻して参加しました。
開会式は参加したかったんですが、のんびりする時間が出来たのでのんびり企業ブースを周り、
ノベルティグッズを収集しました。
(CircleCI Tシャツ いただきました)

LINEの企業ブースでも結構ゆっくり説明を聞くことができて、いくつか自社公開のOSSを

元記事を表示

[Android] Kotlinのラムダ式でonClickListenerとonLongClickListenerを両立

Androidのアプリにてボタンなどを長押しする時の処理とタップしたときの処理を変えたい場合があります。

だいぶKotlinにも慣れてきて、ボタンなどのonClickListenerもラムダ式で書くようにしていますが、表題の通り、Kotlinのラムダ式を使って`onClickListener`と`onLongClickListener`を両立するのに躓いたのでメモしておきます。

`onClick`イベントは通常returnを持ちませんが、`onLongClick`イベントは`Boolean`型の戻り値を持ちます。この戻り値を`true`とすると`onClick`と`onLongClick`が干渉しなくなります([公式Reference](https://developer.android.com/reference/kotlin/android/view/View.OnLongClickListener.html))。

ですが、あれ?ラムダ式の戻り値ってどう書くんだ?となって調べて[こちらのサイト](https://negichou.com/kotlin-around-func/

元記事を表示

【Androidアプリ入門】郵便番号から住所取得アプリを作ってみた♪

今回はAndroidアプリにPython連携するには、Webapi+kotlin使った方が簡単ですよという助言を受けて、Webapiっぽいものを理解するために郵便番号から住所取得するアプリを作ってみました。
このアプリは以下の参考の第11章非同期処理とWeb API連携のコードを参考にしています。
【参考】
[Androidアプリ開発の教科書 Kotlin対応](https://www.amazon.co.jp/%E5%9F%BA%E7%A4%8E%EF%BC%86%E5%BF%9C%E7%94%A8%E5%8A%9B%E3%82%92%E3%81%97%E3%81%A3%E3%81%8B%E3%82%8A%E8%82%B2%E6%88%90%EF%BC%81Android%E3%82%A2%E3%83%97%E3%83%AA%E9%96%8B%E7%99%BA%E3%81%AE%E6%95%99%E7%A7%91%E6%9B%B8-Kotlin%E5%AF%BE%E5%BF%9C-%E3%81%AA%E3%82%93%E3%81%A1%E3%82%83%E3%81%A3%E3%81%

元記事を表示

UnityでAndroid実機で実行したときに一部環境で画面が乱れる問題と対処法

# 発生した問題
UnityでAndroidスマートフォン向けの2Dゲームを開発していてゲーム画面のアスペクト比を統一させようとした。
方法はスクリプトでスマホ画面のアスペクト比が基準となるアスペクト比(今回は16:9)と異なる場合、ゲーム開始時にメインカメラのrectを変更してゲーム画面のアスペクト比を統一して余ったところは黒帯を表示させることで対応した。
エディタ上でゲームを実行したところ下の写真のようにカメラ外の左右の余った部分は黒帯が表示されている。
![New Unity Project – test – Android – Unity 2019.2.13f1 Personal _DX11_ 2019_12_15 14_30_54.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/211264/53181803-4b75-9767-b936-36b0763c60fa.png)
しかし、ビルドして手元のPixel 3aで実行したところ、下の写真のように左右のカメラの表示外の部分が黒帯にならず表示が乱

元記事を表示

Maps SDK for Androidチュートリアル

Androidで地図を表示する場合、第一の選択肢となる [Maps SDK for Android](https://developers.google.com/maps/documentation/android-sdk/intro) の使い方についてまとめてみました。

# Maps SDK for Androidとは

Google製のマップを表示するAndroid用のSDKです。地図の表示だけならモバイルは無制限に利用できます。iOSやブラウザ用もあります。

# 準備

API Keyを取得する必要があるので、[Maps SDK for Android – Get an API key](https://developers.google.com/maps/documentation/android-sdk/get-api-key) を参照してAPIキーを作成してください。

1. GCPコンソールにいく
2. gcpプロジェクト作成
3. 認証情報に行き、API key生成
4. API keyの制限

API keyの制限で、特定のパッケージ名のアプリに限定するためには、

元記事を表示

Androidアプリ開発で国民の祝日を表示させるのに試行錯誤。前編

 どうも!ヨースケです。日記アプリもようやく1画面が終わったので、約10時間に及ぶ日帰りミニ旅をしていました。一眼レフでたくさん撮るぞーと意気込んでいましたが、ほとんど撮れませんでした…ただ疲れただけで、帰り道に前方後方不注意の車に二度轢かれかけるなどさんざんな一日でした(笑)。
 
 今回は日記アプリに取り入れたその日が国民の祝日ならば表示しタップするとその詳細をダイアログで表示する。というのを前編後編にわたって紹介します。

– 国民の祝日
– 日付が固定されている祝日
– 第〇月曜日の祝日
– 春分と秋分
– 振替休日

### 国民の祝日
 まず、日本にある国民の休日を記してみます。
**元日、成人の日、建国記念の日、天皇誕生日、春分の日、昭和の日、憲法記念日、みどりの日、こどもの日、海の日、山の日、敬老の日、秋分の日、スポーツの日、文化の日、勤労感謝の日**の16個あります。「体育の日」は2020年に「スポーツの日」と改められました。次はプログラムで重要になる日付の話をします。

### 日付が固定されている祝日
 プログラム的には楽な日付が初めから決められている祝日の一

元記事を表示

BottomAppBarにBottomNavigationぶち込んでみた

#はじめに
こんにちはメッシーです。

今回はBottomAppBarを見た目に入れながらBottomNavigationによるFragmentの切り替えを実装します
BottomAppBarだけを使ってみたとか、BottomAppBarにボタンを配置してみたなどの記事はあったがBottomNavigationを追加してFragmentoの切り替えも加えてる記事がなかったのでこれを書くことにしまいした。

BottomAppBarの詳細についても軽く紹介しながら行っていきます
最後にサンプルのgithubを載っけるのでそのまま使えます

今回の完成品がこちら
![393794.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/188385/77ce6102-bf56-467d-03d0-e4c0d93b27a4.jpeg)

#Gradle設定

はじめにGradlにMaterialとNavigationを追加します。
記事によってはAPIのバージョンを指定しているとこがあったが特に気にしなくてもできた。

元記事を表示

RetrofitのAPIレスポンスをモッキング

コードのテストをしたり、APIがまだ未実装だったりで、モックが欲しかったのでそのメモ。

## 導入

[Retrofit Mock](https://github.com/square/retrofit/tree/master/retrofit-mock)を使う。

“`gradle
def retrofit_version = ‘2.7.0’
implementation “com.squareup.retrofit2:retrofit:$retrofit_version”
implementation “com.squareup.retrofit2:retrofit-mock:$retrofit_version”
“`

## 実装

サービスインタフェースを実装したモックを作成し、そこに返したいデータを書く。

“`kotlin:Service.kt
interface Service {

@GET(“api/v1/auth”)
fun getAuth(@Query(“id”) id: String): Single

@GET(“

元記事を表示

RxJavaで連続してAPIを叩いた時に発生したエラーのハンドリング

RxJavaで連続してAPIを叩いた時に発生したエラー、独自の形式にすることで処理を切り分けたいと思ったこと、ありませんか?僕はあります(そもそもAPIのエラーで判別したいけど、実装がアレだったもんで)。

## NGパターン

チェインの途中で`doOnError`を挟んでエラーをthrowしたけど、止まらずその後の`flatMap`に流れてしまうのでダメ。

“`kotlin
repo.getAuth(“xxx”)
.doOnError { throw AuthError(“${it.message}”) }
.flatMap { repo.getPayment(it.token) }
“`

## OKパターン

`onErrorResumeNext`を使うと、エラーが発生した時に別のObservableを流せる。ここで独自のエラーを返せば、`onError`で処理を切り分けることが可能。

“`kotlin
repo.getAuth(“xxx”)
.onErrorResumeNext { Single.error(AuthError(“${it.m

元記事を表示

Flutterウィークリー #85

# Flutterウィークリーとは?
FlutterファンによるFlutterファンのためのニュースレター
https://flutterweekly.net/

この記事は#85の日本語訳です
https://mailchi.mp/flutterweekly/flutter-weekly-85

※Google翻訳を使って自動翻訳を行っています。翻訳に問題がある箇所を発見しましたら編集リクエストを送っていただければ幸いです。

# 読み物&チュートリアル

### Flutterオンラインおよびオフライン接続を実装する方法

How to Implement Online & Offline Connectivity in Flutter

Sagar Shendeによるこのチュートリアルで、ユーザーがオンラインまたはオフラインのときにアプリ内の情報を処理する方法を学びます。

### Flutter Webを使用してサーバーにファイルをアップロードする
https://rodolfohernan20.blogspot.com/2019/12/upload-files

元記事を表示

Flutterウィークリー #84

# Flutterウィークリーとは?
FlutterファンによるFlutterファンのためのニュースレター
https://flutterweekly.net/

この記事は#84の日本語訳です
https://mailchi.mp/flutterweekly/flutter-weekly-84

※Google翻訳を使って自動翻訳を行っています。翻訳に問題がある箇所を発見しましたら編集リクエストを送っていただければ幸いです。

# 読み物&チュートリアル

### FlutterモジュールをネイティブのAndroidプロジェクトに追加し、Codemagicでテストする方法
https://blog.codemagic.io/flutter-module-android-yaml/

Flutterモジュールを既存のAndroidアプリに統合する方法に関するSouvik Biswaによるチュートリアル。

### Flutterアプリケーションで複数のテーマを管理する
https://blog.dammak.dev/managing-multiple-themes-in-flutt

元記事を表示

Xamarin.Forms でガワネイティブアプリを作るときのテンプレートプロジェクトを作る1

今年は専ら Angular で Webアプリを作ったり、ガワネイティブアプリを作ったりしていますが Xamarin のアドベントカレンダーと聞いてやってきました。

## 概要

最近は、モバイルネイティブアプリよりも Webアプリ(SPA/PWA)、そしてそれを利用したガワネイティブアプリを推している私ですが、ガワネイティブアプリを作る時の「ガワ」には Xamarin(Xamarin.Forms) を採用しています。

なぜガワネイティブなのか?ネイティブではなく、Web(PWA)でもないのか?については、

* [Angular と Firebase で月間PV1億超えの PWA を作った話 – Qiita](https://qiita.com/MasanobuAkiba/items/d2d4be3f8fd2e23c0c1a)

のエントリがよく解説されていますのでご一読を。私のケースは BtoC ではなく BtoB であるため、全面的に一致するわけではありませんが、内容については大いに同意できます。

ガワネイティブアプリは、Webアプリがネイティブの機能を欲するから採用されるわ

元記事を表示

androidでfortran開発する

#概要
androidでfortranコードを書いて実行する。

# スタック
CUI環境はUserLAndを使った。Termuxというものもあるが、昔試したところfortranコンパイラが使えなかった。UserLAndではLinuxパッケージもUbuntuやArch、kaliなどから選ぶことができ、Ubuntuの場合はaptでgfortranが入る。

エディタは別にEmacsでなくてもvimでもnanoでもお好きなものをどうぞ。

# 方法
## UserLAndのインストール
完全に焼き直しで申し訳ないが、下記の記事を参照してほしい。

https://qiita.com/bluepost59/items/7f5608dff98c82ffb668

Google Playからアプリをインストールして、環境を作る。結構でかいダウンロードが走るので、回線を確認してから環境構築に入ること。時間は5分〜10分程度かかる。今回はUbuntuを使った。

うまく行けば下記のようにCUIが立ち上がる。ソフトキーボードだと画面が半分圧迫されるので、ハードウェアキーボードを使うほうがよい。百均でO

元記事を表示

FirebaseとUnityの連携 入門(Cloud Storage編)

この記事は、[Firebase Advent Calendar 2019](https://qiita.com/advent-calendar/2019/firebase)の15日目の記事です。

## 概要

以前、『[FirebaseとUnityでアプリ開発(ハンズオンみたいなやつ)](https://qiita.com/gremito/items/dfb2080300955c5d5768)』という記事をアップし、そこでFirebaseとUnityの連携方法を簡単に解説しました。

今回は特定のFirebaseのサービスを扱う際、まずは0から作るのではなく、サンプルを活用してFirebaseとUnityの連携をいち早く体験できる方法のご紹介です。

Unityの場合、AssetBundleをサーバに配置し、`UnityWebRequest.Get`などを使ってAssetBundleデータをダウンロードしますよね。
そのため今回は、[Cloud Storage](https://firebase.google.com/docs/storage/unity/start?hl=ja)を

元記事を表示

OTHERカテゴリの最新記事