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

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

Re:0から始めるAndroid開発 ~いろんなフレームワークを使ってみる(8/25完了)~

# はじめに
この記事は [Android Advent Calendar 2019](https://qiita.com/advent-calendar/2019/android) の6日目です!

普段、Androidアプリケーションをどの言語どのフレームワークetc..を使って開発していますか?
自分は `Android Studio + Java` や `Unity + C#` で開発することが多いです
思えば自分が触ったことが無いフレームワークはたくさんありますが、自分が開発したいもの合わせて、よりベストな環境を選んでおきたい身としてはいろんなフレームワーク、言語を知って触っておくに越したことは無いのはエンジニアとしては当然だと思ってます。
なので、いろんなフレームワークを使って **同じ動作をする** Androidアプリを作成します!

# TL;DR
Androidアプリケーション開発のフレームワーク一覧

| フレームワーク | 言語 | 公式ページ

元記事を表示

Flutter で Stateを保持したまま画面切り替えができる BottomNavigationBar や TabBar の作り方

## はじめに

[ユアマイスター Advent Calendar 2019](https://qiita.com/advent-calendar/2019/yourmystar) の6日目の記事です。

ユアマイスターでは、 [あなたのマイスター](https://yourmystar.jp/) でハウスクリーニングや修理などのサービスを提供するプロや職人が利用する店舗向けアプリ「マイスターアプリ」 ([Android版](https://apps.apple.com/jp/app/id1478724946?l=ja), [iOS版](https://apps.apple.com/jp/app/id1478724946?l=ja)) があります。
このアプリでは、Flutterを採用しており、2019年10月にリリースされました。(その他の技術スタックは [こちら](https://yourmystar-engineer.hatenablog.jp/entry/2019/11/25/090000))

このアプリには、 BottomNavigationBar や TabBar など使

元記事を表示

「adb shell am kill」を使って「アクティビティを保持しない」設定から卒業する

`adb shell am kill` が便利だったのでご紹介したいと思います。

# 「アクティビティを保持しない」設定
開発者オプションにある「アクティビティを保持しない」設定、Androidエンジニアなら使ったことがあるかと思います。

この設定を有効にすることで、Activityがバックグラウンドに行ったタイミングで破棄されるようになり、Activityの破棄に起因するバグなどを確認するのに役立つ便利な設定です。:relaxed:

## ちょっと不満なところ :worried:
そんな便利な設定なのですが、

1. いちいち開発者オプションを開いてON/OFFを切り替えないといけない
2. 設定をONにすると端末全体でその設定が有効になってしまう

といった、ちょっとだけ不満に感じる点も個人的には感じています。

# `adb shell am kill`

そこで今回ご紹介するのが `adb shell am kill` です。
まぁ雑に説明するなら、好きなタイミングで特定のアプリをkillすることができる、というadbコマンドになります。

## 使い方
使い方はすごく

元記事を表示

AWS CognitoにAndroidでサインインする

今回は、Androidのネイティブアプリで、AWS Cognitoにサインインしてみます。
SDKが提供されていますが、OpenID Connectに準拠したエンドポイントを呼び出すだけなのに、内部で何をしているかわからずに、てこずりそうだったので、いっそのこと自分で実装しています。

# 大まかな流れ

サインインは、OpenID Connectに準拠したエンドポイントを呼び出しているだけです。

以下が参考になります。
 [AWS Cognitoのエンドポイントを使いこなす](https://qiita.com/poruruba/items/a284b9f522d8d6e1e3f9 )

ただし、これらエンドポイントは、ブラウザからの利用を想定しているため、そのままでは、ネイティブのAndroidアプリケーションでは使えません。
そこで、ネイティブアプリからブラウザを起動し、ブラウザでログインした結果をネイティブアプリに戻すようにしました。

ここで使うブラウザとして、通常のブラウザのほかに、Chrome Custom TabsやWebViewを使う方法があります。今回はこのうち、

元記事を表示

アンドロイドエンジニアが不足しているという噂について調べてみた

概要

最近アンドロイド開発におけるエンジニアが不足しているという話をよく聞く様になった。特にkotlinエンジニアはグーグルがkotlinファーストを掲げるなど需要がかなり高まってると言われている。しかし、swiftの様に今まで人気がなかったことや、Javaで開発していたことが多かったためkotlinで開発ができるエンジニアの供給が追いついていないのが現状である。売り手市場といわれるAndroidエンジニアのについて、その真相を調査した。

現状の分析

まず、エンジニアの単価をiOSとAndroidで比較してみようと思う。

アンドロイドエンジニアの単価

フリーランスエンジニア運営事務局の調べによると、下記の様になっている。

Android経験1年未満 25万円~30万円/月(週5常駐案件の相場単価)

Android経験1年   30万円~45万円/月(週5常駐案件の相場単価)

Android経験2年   40万円~55万円/月(週5常駐案件の相場単価)

元記事を表示

【Firebase Analytics】Universal Links/App Linksでアプリを起動した回数が知りたい

# はじめに
* この記事は[オールアバウトアドベントカレンダー](https://qiita.com/advent-calendar/2019/allabout)6日目の記事です。
* これまでモバイルアプリ(Android, iOS)の集計にGoogleアナリティクスSDKを利用していたのですが、**[2019年10月にGoogleアナリティクス開発者サービスSDKが終了](https://support.google.com/firebase/answer/9167112?ref_topic=6386699&authuser=1) しました(Googleアナリティクス 360 のユーザーのプロパティには影響はありません)**
* 今後のモバイルアプリ向けの集計は、Firebase SDKを利用して集計する**Firebase Analytics**に移行する必要があります
* [Firebase 向け Google アナリティクスについて](https://support.google.com/analytics/answer/9165830?authuser=1)
*

元記事を表示

Flavorってなんなのか

# Flavor(味付け)?
みなさんFlavor使ってますか
意外と使ってないアプリも多かったりするんじゃないですかね

今日はFlavorのよくある使い方を例に、少しだけアプリに味付けをしてみたいと思います

とりあえずAndroidStudioで適当なプロジェクトつくります
URLとか出したいじゃないですか。ふつう。
ということで、Configファイルに記載してあるURLを出してみます。
スクリーンショット 2019-12-05 19.55.50.png
スクリーンショット 2019-12-05 19.56.02.pngAndroidアプリ開発をしているときに思ったことや気づいたこと、感じたこと

 こんにちは。最近寒くなってきましたねー。僕は未だにジャンバーを着るタイミングがつかめませんw

アプリ開発をしている人しか分からないネタですw

– できるだけネットに頼りたくない
– 思うようなことができたらうれしい
– PCとノートの使い分け
– 次作るアプリの案が出てくる

### できるだけネットに頼りたくない
 初めてアプリを作る際や新しくプログラミング言語を学ぶときに僕は必ず参考書を買います。その中で必ずと言っていいほど参考書だけでは分からないところが出てきます。例えば、タイマー機能を実装したいという時はネットに頼ります。そういうのではなくて、自分の力で何とかなりそう、考え方を変えれば実現できそうという時にネットを頼りたくはないと感じます。それでも分からない!となるとインターネットに頼るんですが、やっぱり悔しいですね。僕の中ではネットは最終手段

元記事を表示

Android / iOS アプリのテスト配布サービスあれこれ(DeployGate、Firebase App Distribution、Bitrise)

この記事は [くふうカンパニー Advent Calendar 2019](https://qiita.com/advent-calendar/2019/kufu)、5日目の記事です。

くふうグループの [Da Vinci Studio](https://da-vinci-studio.com/) では、さまざまな Android / iOS アプリの開発やサポートを行なっています。
そしてふだんから複数のサービスを使ってテスト配布しているので、それぞれのサービスについての感想と使用例を書きます。

**1. [DeployGate](https://deploygate.com/)**
**2. [Firebase App Distribution](https://firebase.google.com/docs/app-distribution?hl=ja)**
**3. [Bitrise](https://www.bitrise.io/)(の配布サービス)**

1 と 2 は [fastlane](https://docs.fastlane.tools/) を使ってアップロ

元記事を表示

NavigationViewのアイテムを動的に隠す

## はじめに
業務において「条件に応じてNavigationViewのアイテムを隠す」
という要件があって調べたので備忘録として残しておきます。

## 実装方法
[BottomNavigationのアイテム](https://qiita.com/masaibar/items/8c6d6ab5a898233f1301 )の場合とは違い、Visibilityをいじるのが正解のようです。

“`kotlin
navigationView.menu.findItem(R.id.nav_slideshow).isVisible = false
“`
## 結果
Slideshowというメニューを隠してみます。

### 通常時
通常時は下記のようなアイテムを表示しています。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/68671/af960db2-a1c5-4fef-a905-d167bbb435f8.png)

### 隠した時
このようにSlideshowが隠れました。
Visib

元記事を表示

MVPとMVVMについてざっくり整理

## はじめに
業務では専らAndroidアプリの開発をしています。
ただ、今まではあまりアーキテクチャの学習をしっかりしてこなかった面がありました。
なので今回はAndroid開発でよく耳にするMVPとMVVMの設計方法や考え方について調べ、その内容を自分用に整理してみようと思い、この記事を書いてみました。
今回の投稿が初めてであり、この記事自体もまだざっくりとした概念部分しか書けていないので、引き続き自分で実装してみたり、テストコードを書いてみたりしていこうと考えています。機会があればそちらも随時上げていけたらと思います。
(Androidと言いつつ、Androidのコードは出てきません。。。)

ちなみに、今回参考にさせていただいた書籍は[こちら](https://peaks.cc/books/architecture_patterns)。

## MVPとは

**UIの関心ごとをModel,View,Presenterという3つの役割に分離させたアーキテクチャ
UIの複雑さを解決することを目的としている**

* Model
– UIに関わるデータを定義しデータ構造を提供す

元記事を表示

リリースビルドで「SocketException: Failed host lookup: ‘xxxxxxx’ (OS Error: No address associated with hostname,)」と言われたときは。

# 要約
– デバッグモードでリクエスト飛ばせたのに、リリースビルドだと表題のエラーが出る
– ちゃんと``を付与しよう!
– 公式ドキュメントを、見よう

# 事例と原因、対策
Flutterアプリで`http`など通信を行うアプリを作っている時に気を付けたい事例です。
デバッグビルドやiOSのリリースビルドでは問題なく動いたのに、リリースビルドのAndroidのみ通信部分でエラーが起きる場合があります。

エラー内容としては以下の通りです
`SocketException: Failed host lookup: ‘xxxxxxx’ (OS Error: No address associated with hostname,)`

原因としては、インターネットに関するパーミッションが付与されていないことでした。

Android開発を経験した人にはお分かりだと思いますが、Androidではネットワークを使用するためには
`

元記事を表示

Firebase App Distribution を使ってみた

## Firebase App Distributionとは
Firebase App Distributionは開発途中のアプリケーションをテスターに配布するプラットフォームで、AndroidとiOSに対応しています。

今回はFirebaseコンソールとGradleを使用したapkファイルの配信方法を紹介します。

## 特徴
– クロスプラットフォーム
– AndroidとiOSに対応しています
– テスターの管理
– テストチームをグループにまとめて管理できます
– 招待メールを作成したり招待リンクを作成できます
– 招待した人数、招待を承認した人数、インストール数など把握できます
– テストアプリの配信方法が豊富なのでお使いのCI環境に合わせてすぐ導入できます
– Firebaseコンソールから配布
– firebaseコマンドから配布
– gradleから配布(Android)
– fastlaneから配布
– Crashlyticsを組み合わせるとビルドで安定性の指標を自動的に取得できます
– 新しいアプリを

元記事を表示

RailsエンジニアがReactNativeエンジニアになるにあたって苦しんだところワースト3

![top.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/227429/b61cebb7-f2a4-79c0-a694-f48e993cfb1f.png)

# はじめに

こんにちは、株式会社OKANで「おかんPay」というプロダクトのPdMをしながらも、自らバリバリReact Nativeで実装している [かなすぎ](https://twitter.com/OKanasugi) と申します。
元々は、RailsでOKANの社内システムを構築していたサーバーサイドエンジニアだったのですが、志願してReact Nativeを使うアプリエンジニアになってから約半年が立ちました。
そこで、RailsエンジニアがReact Nativeを扱うアプリエンジニアになる時に苦しんだ箇所をまとめることで、自分と同じようにReact Nativeを新たに勉強する人の助けになればと思いながら記事を書きました。

# 想定読者

– Railsエンジニアだが、これからReactNativeアプリもつくってみたいなって思って

元記事を表示

[Android]Navigation でシンプルな画面遷移を最速で実装する

# はじめに

`Jetpack` の `Navigation` はすごく便利ですよね。
最近ちょくちょく利用するのですが実装の仕方を忘れてしまいます。

なので忘れても `Navigation` を最速で実装できるようにするため、
1つの `Activity` で 複数の`Fragment` を切り替えるアプリの作成方法をまとめます。

![Dec-04-2019 09-02-30.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/79387/9bc31ec2-ba7f-f074-a63a-be9af9d82c8c.gif)

# 準備

`Navigation` を利用したアプリケーションを作成するための下準備をします。
次の手順で必要なライブラリやクラス、レイアウトを生成していきます。

## `Navigation` をセットアップする

次の内容を `dependencies` に記述すると`Navigation`をインストールできます。
`Java` と `Kotlin` でインストール方法が

元記事を表示

【Androidひとり開発】~ガラパゴス実装に陥らないための参考資料~

~この記事は、[ひとり開発 Advent Calendar 2019](https://qiita.com/advent-calendar/2019/solo-developer)の提供でお送りしています~
前回の5日目は @mikkame さんの [Githubの日本語で書かれてるっぽいIssueを検索するサイトつくった](https://qiita.com/mikkame/items/33d65868195ae9aecdd3)でした。5日目なのにmikkameさんでした。(絶対これが言いたくて・・・)
OSS活動の入り口に、言語ハードルから下げていくのは全く正しい&なかなか思いきれなかった切り口ですね。ありがたい・・・。

## Androidアプリ、作ってますか
作ってますか。(エコー)
開発手法の進化、ヤバいですよね。
Androidx、ついていけてますか。
`findViewById`、まだ使ってますか。
根絶する方法、調べましたよね。

「ググったらなんか出来たな」って、なりますよね。
「けどコレでええんか?」とも、なりますよね。

そこからの質問先、困りますよね。
インタ

元記事を表示

Androidでの位置情報取得(Android10対応)

# 動機

バックグラウンドで常に位置情報取得を行う必要が出てきて、探してみるもQiitaの記事は古いものばかり。
ほぼ[公式のガイド](https://developer.android.com/guide/topics/location/battery#use-cases)を参考にしましたが、散らばっていて分かりづらい部分もあったので、ユースケース別にまとめてみます。

# Case1. マップに表示するだけ

位置情報を使うアプリといえば大抵はこのユースケースでしょう。

その場合は[Maps SDK for Android](https://developers.google.com/maps/documentation/android-sdk/intro)を使うのがいいでしょう。現在地表示はSDK側で用意されており、SDK側が位置情報を取得、更新してくれるため、自身で現在地を取得することはないかと思います。

ただし、現在地の位置情報データ(緯度経度情報)を利用するためには、次のように自身で位置情報を取得する必要があります。[^1]
Maps SDKにも[現在地を取得する方

元記事を表示

アプリのコンポーネント(サービス, ブロードキャスト レシーバ)について

#概要
androidの開発を始めた頃につまずいた箇所をAdevent Calenderを機に振りかえりたいと思い記事にしました。

[サービス](#サービス)
[ブロードキャストレシーバ](#ブロードキャストレシーバ)

# サービス
[サービスの概要](https://developer.android.com/guide/components/services?hl=ja)
サービスはバックグラウンドで動作するクラスで、バックグラウンドでのデータダウンロードや音楽の再生などに使われます。
過去のアプリではバックグラウンドで歩数を取得しごにょごにょするなんてこともサービスでしてました。

サービスには以下の3種類があります。

– **フォアグラウンドサービス**
– **バックグラウンドサービス**
– **バインドされたサービス**

例:サービス起動中に通知を表示する

“`AndroidManifest.xml


// 追加
【Androidアプリ入門】内部ストレージに保存・読込する♪文字化け解消

[【Androidアプリ入門】内部ストレージに保存・読込する♪ハマった編](https://qiita.com/MuAuan/items/d7131513db3fb7a03c2d)で日本語等が文字化けしていましたが、以下のコードで文字化け解消しましたm(__)m

“`kotlin
R.id.btClick1 -> {
var temp=””
var pathUtf8 = getFilesDir().getAbsolutePath();
temp = File(pathUtf8+”/testfile.txt”).readText(Charsets.UTF_8)

output.text = df.format(date) + “\n” + temp
input.setText(“”)
}
“`

| 1 | 2 | 3 |
|:-:|:-:|:-:

元記事を表示

プロフィール画面で見るアレやってみたい(CoordinatorLayout)

おはようございます!
CA Tech Dojo/Challenge/JOB Advent Calendar 2019(長ぇ)
の4日目を担当をさせていただきます、zoothezooです!!

夏休みにDojo,Challengeに参加し、
12月から(厳密には明日)TechJOBに挑戦します。
では、参りましょう。

## 概要

プロフィール画面でよく見るような上にスクロールすると、
ヘッダー画像がいい感じに消えていく??やつを作りたいと思います。

理解し難い実装たくさんあると思いますが、
お手柔らかにお願いしますね。

これです。

## 実装
– activity_main.xml
(かなり省略しています)

“`xml

元記事を表示

OTHERカテゴリの最新記事