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

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

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での位置情報取得(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

元記事を表示

Androidを開発する上で参考にしているもの

この記事は[第二のドワンゴ Advent Calendar 2019](https://qiita.com/advent-calendar/2019/dwango2)の5日目の記事です。

ドワンゴでは[N予備校Androidアプリ](https://play.google.com/store/apps/details?id=nico.ed.nnn.zane&hl=ja)を開発しているのですが、その中で実装で困ったときに参照している資料や、新しい技術についていくための情報収集などをまとめたいと思います。

# Androidを開発する上で参考にしているもの
## 公式アプリのソースコード
Androidの有名なカンファレンスとして[Android Dev Summit](https://developer.android.com/dev-summit)や[DroidKaigi](https://droidkaigi.jp/2020/)などがありますが、そのイベントで作成されているAndroidアプリのコードがとても参考になります。

Android Dev Summitアプリのソースコ

元記事を表示

[Android]簡単な自作Viewを作った

#はじめに
簡単な自作Viewや独自Viewの作り方を初心者向けに説明していきたいと思います。
この記事で紹介する内容は下記に該当する方向けになっています。

###主なターゲット層
・Androidアプリ初心者の方

・自作Viewを作ったことがない方

・難しい言い回しをすっ飛ばして、自作Viewを簡単に作ってみたい方

###自作Viewを作る利点
今回の自作Viewを作る利点は以下のとおりです。

・独自にアレンジされた仕様のViewを使える点

・複数のViewで処理をする仕様をひとかたまりにして使える点

たとえば本来はできない、ButtonなどにClickListenerを複数追加することで自分なりにアレンジできる点など、その他もろもろの利点があると思います。自作Viewに取り組んだことがない方は是非取り組んでみてください。

#自作View作成の手順
自作Viewの作り方は様々で色々な作り方があるっぽいのですが、今回はできるだけシンプルで楽に作れる方法で紹介していきたいと思います。

まずは自作View作成の大まかな流れを紹介します。

流れとしては、

自作のVie

元記事を表示

GitHub ActionsでAndroidビルドとユニットテストとDeployGateに公開する

##

####1.以下のDeployGateのAPIキーとユーザはGitHubのリポジトリページにあるSettings→Secretsから追加してください
DEPLOYGATE_API_KEY ・・・DeployGateのプロフィールページに記載されてます
DEPLOYGATE_USER ・・・DeployGateのユーザ名

###### 1.[Settings]をクリック
スクリーンショット 2019-12-05 10.12.46.png

###### 2.[Secrets]をクリック
スクリーンショット 2019-12-05 10.16.38.pngCameraXとMLKitを組み合わせてQRコードを読み取る

CameraXはまだベータですが、その精度の高さには驚かされるばかりです。

本記事は[Android Advent Calendar 2019](https://qiita.com/advent-calendar/2019/android)の2019/12/04分です。
とてもQRコードリーダーを作れちゃうので、その方法を紹介します。

今回は、Firebase MLKitと組み合わせて「QRコードリーダー」を作ってみます。
※Firebaseプロジェクトの準備は別途ご用意ください

# 下準備
## Gradleに必要なものを追加
CameraXとMLKitを追加しましょう

“`gradle:build.gradle
implementation “androidx.camera:camera-core:1.0.0-alpha06”
implementation “androidx.camera:camera-camera2:1.0.0-alpha06”

implementation “com.google.firebase:firebase-ml-vision:24.0.

元記事を表示

Facebookログインで`クエリを実行できませんでした。`と出る対処法

## 環境など
– Facebook SDK v5.9
– FirebaseUI
– Android

## 内容
Facebookログインをログイン画面へ行く前に下記エラーがでました。

“`
Caused by: SERVER_ERROR: [code] 1675030 [message]: クエリを実行できませんでした。 [extra]:
“`

結論から言うと下記サイトの通りだったのですが、自動翻訳っぽくてわかりにくかったので少し説明します。
https://codeday.me/jp/qa/20190218/288009.html

`facebook for developers`にて`役割>役割`で`テスター`を登録しておかないと上記エラーが出るようです。
管理者はテスターになれない上に、友達登録しておかないと、追加対象として出てこないようなので、
新規アカウントを作成し自分で友達登録を行い、新規アカウントをテスター登録することで、ログインできるようになりました。

2019年10月頃にサンプル作成したときには必要なかったのですが、2019年11月に実装した時には必要

元記事を表示

[ Android ] ブロードキャストでIntentを送受信する

今回はAndroidでブロードキャストの送受信する方法について記す。

##目的
私が目的とするプログラムはAsyncTaskを継承したクラスからブロードキャストを送信し、メインアクテビティでそれを受信するプログラムである。

##必要なクラス
ブロードキャストはアクティビティやサービスクラスから送信できる。
一方受信するにはBroadcastReceiverを継承したクラスが必要である。

##実装

###登録
まずBroadcastReceiverを継承したクラス(MyReciever)をマニフェストに登録しなければならないので、以下を追記する。このクラスは一クラスとして定義してもよいが、インナークラスとして定義することが多いらしい。本記事では、受信クラス(メインアクティビティ)内で定義している。またアクション名も定義しなければならない。本記事では”testとしている。”

~~~xml



元記事を表示

【Android/Kotlin】kotlinでAndroid開発tips

## 多言語対応のstringsファイルのディレクトリ
– valuesと同等の階層に置く。valuesのなかにおくと参照できないのでNG。

## onCreateでfindViewByIdをする
– メンバー変数でViewを定義せず、
xmlのViewをonCreateの中でfindViewByIdしたいときは、
「as ImageView」をつければOK。

## adapterでsetTagをする意味
– adapterの中でsetTagをすると、
viewHolderにviewが紐付けられる。
– viewHolderは他のActivityなどから参照できるので、
viewを紐付けて格納しておきたい。
– ただし、「5番目」のViewを取得する、というようなことはできないので、
別途ifなどでてらしあわせる処理が必要。

## switch(トグル)の活性/非活性
– isEnable = false : グレーになる
– isClickable = false : 指定した色になる

## クリッ

元記事を表示

Android StudioでAndroidの画面をキャプチャ/録画しよう

# はじめに
アプリ開発の際、端末のキャプチャや録画したい時、
Android Studioで簡単にできる方法があったので紹介します。

## キャプチャの方法
まず、USBデバックを有効にし、
端末のキャプチャしたい画面を表示しておきます。
そして、下記に画像に表示されいている、
Android StudioのLogcatにあるカメラのアイコンをクリックします。
はい、キャプチャできました!
めっちゃ簡単ですね!
![スクリーンショット 2019-11-28 17.56.44.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/472891/2cd6c391-0797-8619-a1e6-7630ca0186aa.png)

## 録画方法
次に、録画の方法を紹介します。
録画はMP4形式で最大3分間録画できます。
先ほどの画像のカメラアイコンの下にある、動画アイコンをクリックします。
クリックすると、録画オプションが設定できます。
![スクリーンショット 2019-12-03 18.09.54.png](

元記事を表示

zxing-android-embedded を使ってみる (Kotlinで)

## はじめに
この前、授業成果物として簡易的なQRコード読み取りアプリケーションを制作したときに使ったライブラリについてメモを残しておきます。

## 今回使用したライブラリ
* ZXing Android Embedded
https://github.com/journeyapps/zxing-android-embedded

## できること
簡単に QR 読み込み機能のアプリケーションが作成できます。
![デモのキャプチャ](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/276546/d7232f58-b0f1-9f49-0f65-98a7701a2d82.gif)

## 使ってみる
公式ドキュメントもあり書かれている通りに進めれば、動作できると思います。
あまり面倒な作業は必要なく、インポートするだけで実行可能です。

#### Gradle ファイルにライブラリを記載する
`build.gradle (app)` に以下の内容を追記します。

“`
repositories {

元記事を表示

Androidアプリのデバッグ中に “Source code does not match the bytecode”というエラーが出る

# エラー内容

Android Studioでアプリをデバッグ中に、以下の画像に示す
`Source code does not match the bytecode`
というエラーが出て正常にデバッグができない際の対処法です。

ZLHg5.png

# 原因
Gradleで参照しているコードが最新版でない。

# 解決方法
## その1
以下のコマンドを実行して、Gradleの依存関係をリフレッシュする。

“`
./gradlew build –refresh-dependencies
“`

# 参考
https://stackoverflow.com/questions/39990752/source-code-does-not-match-the-bytecode-when-debugging-

元記事を表示

Android 2.xなどで基本認証が通らないときのTIPS

# 話題:ベーシック認証のトラブル
Android 4.x以降では発生する頻度が下がったが、Android 2.x時代に頻発したトラブル。
> **基本認証で保護したページを、他の端末からは閲覧できるのに、
Android 2.xの端末からだけは閲覧できない**

何回id/pwを入力しても、幾度でも尋ね直してくる無間地獄。

#解決方法
##前提
| URI | ユーザ名 | パスワード |
| :– | :– | :– |
| https://foo.net | user | password |
の場合
##解決方法
“`
https://user:password@foo.net
“`
これだけ。
もしSSL未対応なら

“`
http://user:password@foo.net
“`
でも全然OK。

いったんこのURIでアクセスした後は既に認証が通っている状態になるらしく

“`
https://foo.net
http://foo.net
“`

とアドレス欄の内容を修正してから再アクセスしてもid/pwを尋ね直されることは、もう、ない。

#注意点

元記事を表示

Android Data Binding(Codelabs for the 2019 Android Dev Summit: Mountain View, October 23-24, 2019.)

[Android Dev Summit 2019
Codelabs for the 2019 Android Dev Summit: Mountain View, October 23-24, 2019.](https://codelabs.developers.google.com/ads19/)

[Android Data Binding](https://codelabs.developers.google.com/codelabs/android-databinding/index.html?index=..%2F..ads19)の日本語訳

# 1.はじめに
## Data Binding Library
Data Binding LibraryはAndroid Jetpack libraryの一つであり、プログラムではなく宣言形式を使用して、XMLレイアウト内のUIコンポーネントをアプリのデータソースにバインドできます。
これにより、定型コードを削減できます。 このコードラボでは、次の方法を学習します。

– 既存のアプリでデータバインディングを設定する
– レイアウト式

元記事を表示

[Android] 加速度センサのサンプリング周波数が知りたいとき

端末依存で最大・最低・間隔が決まるので,確認用のコードを書いた。
メモです。

**Logcatに周期が[ns]で出力される**

“`kotlin
package com.example.getrotationtest

import android.content.Context
import android.hardware.Sensor
import android.hardware.SensorEvent
import android.hardware.SensorEventListener
import android.hardware.SensorManager
import android.opengl.Matrix
import androidx.appcompat.app.AppCompatActivity
import android.os.Bundle
import android.util.Log
import kotlinx.android.synthetic.main.activity_main.*
import java.io.BufferedRead

元記事を表示

[ Android ] 戻るボタン無効化

Androidで端末の戻るボタンを無効にする方法について述べる。

##方法
とても簡単でActivityクラスの**onBackPressed()**をオーバライドし、処理を書かなければ完了である。

~~~java
@Override
public void onBackPressed() {
}
~~~

##参考サイト
以下のサイトがとても参考になった。

[Android]端末の戻るボタンを使えなくする方法(onBackPressed)

元記事を表示

OTHERカテゴリの最新記事