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

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

AndroidとSesameとNFCで開けゴマ 最終版

##動作結果
![jobi9-m8t0q.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/602722/79af172f-b2a5-7967-06cd-f6670d97e5de.gif)

##変更点
・Sesameの操作関係をクラス化
  インスタンスで2台操作できそうに(未実験
  10秒or1分で接続が切れることを利用して、それっぽく例外処理
・スマホとペアリングができていない場合は、createBondでペアリング
・マニフェストでActivityに対して”透明”テーマを適応
・Notificationでヘッドアップ通知で動作状況を把握
・BluetoothAdapterの初期化をdevelopersサイトのKotllin記載に修正

###manufactreDataMacDataStringの見つけ方
このプログラムではPrimarySesameMacDataの値について
![取得場所.png](https://qiita-image-store.s3.ap-northeast-1.amaz

元記事を表示

マージされたAndroidManifest.xmlの内容を表示する

普段編集しているAndroidManifest.xmlがありますが、実際にapkに組み込まれるAndroidMaifest.xmlは外部ライブラリやFlavorのManifestとマージされた結果のxmlとなります。

AndroidStudioでAndroidManifest.xmlを開き、下のタブで `Merged Manifest` を選択することで、マージ結果のManifestを確認することができます。
左クリックから要素がどのManifestから来ているのか追うこともできます。

元記事を表示

実行中のadb server/Unity組込み/Android Studio/環境変数からadbを探して実行するPowerShell関数

# はじめに

PCに複数のadbやAndroid SDKがインストールされている時に起動中のadb serverと違うバージョンのadbを実行するとadb serverが再起動してしまいます。そのため、なるべく同じバージョンのadbを実行するPowerShellの関数を作りました。

# スクリプト

PowerShellの`$profile`に以下のスクリプトを追加してadbを実行すると以下の順番でadbコマンドを探します。

1. 実行中のadb server
2. 実行中のUnityから一緒にインストールしたAndroid SDKのadb
3. Android StudioからインストールしたAndroid SDKのadb
4. 環境変数PATHのadb

“`powershell
function FindAdb() {
# find from process list
$adbPath = Get-Process -Name “adb” -ErrorAction Ignore |
Sort-Object Id |
Selec

元記事を表示

眺めて覚える C# Xamarin Forms(13) File 操作

#Android上の任意のファイルアクセスするときにユーザーの許可が必要です。
##主なAndroidのファイルディレクトリ
|Android.OS.Environment|ディレクトリ|
|——————-|———————–|
|DirectoryAlarms|PRIVATE_EXTERNAL_STORAGE/Alarms|
|DirectoryDcim|PRIVATE_EXTERNAL_STORAGE/DCIM|
|DirectoryDownloads|PRIVATE_EXTERNAL_STORAGE/Download|
|DirectoryDocuments|PRIVATE_EXTERNAL_STORAGE/Documents|
|DirectoryMovies|PRIVATE_EXTERNAL_STORAGE/Movies|
|DirectoryMusic|PRIVATE_EXTERNAL_STORAGE/Music|
|DirectoryNotifications|PRIVATE_EXTERNAL_STORAGE/Notif

元記事を表示

Flutter Web View で Localの HTML , CSSを表示する

# はじめに
皆さんは**Flutter**触ってますか?
Googleが開発しているモバイル向けクロスプラットフォーム,かつWebまでかけちゃうぜ!!ってことで注目しいましたが,思ったとおりにできることも増えてきて,「もうアプリはFlutterで良いじゃん」も近いのかなと思っている今日このごろ.
今回はLocal(端末)に保存したHtml, Css の Web View 表示で手間取ったのでまとめていきます.

# Web Viewって?
アプリ内でWebページを表示できる機能です.
アプリによってはWeb Viewだけで実装しているようなのもちらほら...
そんなわけで結構普通に必要な機能です.
今回は端末内に保存したHtmlを表示させることが目的です.
Flutterでは[こちら](https://pub.dev/packages/webview_flutter)のパッケージを使うことで実装できます.

# 環境
“`bash
$ flutter doctor
Doctor summary (to see all details, run flutter doctor -v):

元記事を表示

Kotlin, LiveData, coroutine なんかを使って初めてのAndroidアプリを作る(12)ユーザー認証編(Firebase Authentication)

[前回](https://qiita.com/kasa_le/items/560775076c3b2f00fcf7)の続きです。

Firebaseのクラウドデータベースである、Firestoreを使う準備として、ユーザー認証を行います。
ユーザー認証には、Firebase Authenticationを使います。

# 今回の目標
Firebase Authenticationの**FirebaseUI Auth**を使ってユーザー認証(ログイン/ログアウト)が出来る。様々な認証フローが使える。

# 環境など

AndroidStudioを3.6.3に上げました。

# Firebase Authentication
Firebase Authenticationには、2つの実装手段が用意されています。
**FirebaseUI Auth**と、**Firebase Authentication SDK**です。
https://firebase.google.com/docs/auth?authuser=0

## 1.FirebaseUI Auth
>ドロップイン認証ソリューシ

元記事を表示

「はじめてのAndroidプログラミング第4版」をAndroid Studio 3.6.3で読み進めてみると、、、

「はじめてのAndroidプログラミング第4版」の初版第2刷りをAndroid Studio 3.6.3で読み進めてみると、すぐつまづきます。(決して、誤記が原因ではない事を先にお断りいたします。)
原因は、本書ではバージョン3.4.1を対象に書かれれいるからでしょうか?(本書では、どのバージョンを対象にしているかは、はっきり書かれていなさそうですが、19ページインストールに関する図から読み解くと、おそらく3.4.1なのでしょう。)

 ここでは、その対処方法いくつか記述していきます。(逐次アップデートします。)

###1.ファイルパスが異なる。
 例えば、57ページの真ん中付近に書かれているactivity_main.xmlというファイルのファイルパス(ディレクトリ)は、本書ではapp/res/layoutですが、実際はapp/SRC/Main/res/layoutの中にあります。
 ここで、ファイルの探し方は、次の写真のとおりです。
![検索1.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/501

元記事を表示

【最新】Android Studioのダウンロード・インストール方法

#【最新】Android Studioの開発環境構築

最近アプリを作る機会が増えてきたので、備忘録として残しておこうかなと思っています。

Androidアプリを開発し始めてから3年程度ですが、それなりに勉強してきたのと、信憑性を十分に確認したうえで発信しています。

##Android Studioのダウンロード

まず、公式サイトからAndroid Studioをダウンロードし、起動します。
https://developer.android.com/studio?hl=ja

##Android Studioのインストール

基本、設定は変えずに「Finish」まで、「Next」をクリックしていきます。

あっという間に、インストールまで完了です。

##AVD(AndroidVirtualDevice)のインストール

###AVDってなに?
AVDとは、仮想Androidです。

アプリを作る際に、実機を用いて行う場合は必要ありませんが、実際、実機だけでテストをする!という訳にはいかないのです。

例えば、Xperiaは大丈夫だけど、Galaxyだとバグが出る・・・等の問題

元記事を表示

【超爆速 秒でコーディング】【Flutter】Adobe 公式 XD プラグインでXDからFlutterに変換してみた

# XD→Flutterがやばい

**この変換が30秒でできます。**

ファイル名

↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓

ファイル名 ファイル名なんかすごい田舎のガス屋さんを見つけた

ハンディプリンタを買いました。Yahoo!のイベント申込みシステム「PassMarket」で使おうと思って買いましたが、なんと現行バージョンではプリンタ機能が無いということがわかりました。

んで、これをどうにか活用できないかなと、ネットサーフィンしていて見つけたのがこれ。

http://www.mklpg.com/

大分の田舎のガス屋さんが作ったガス検針システムです。

・・・Qiitaにお住まいのエンジニアさんにしてみれば、ただのアプリ+プリンタですし、別にすごくもないかもしれませんが、素人の私からすると、これはすごい。

何がすごいって、その、「自分が使いたいから作ったら、なんだかよかった」という感じで、小さいガス屋さん向けに中古機材も組み合わせて廉価にほぼ頒布みたいな感じで売っているのです。

そんなこんなで200以上の小さいガス屋さんに売れているようです。

元記事を表示

「きのこの山」を「たけのこの里」に『正しく』自動で修正して差し上げるプログラム(Androidアプリ版)

##「たけのこの里」という非常に素晴らしいお菓子
人類であれば皆**「たけのこの里」**という非常に素晴らしいお菓子を食べたことがあるはずです。長さ2cmほどのたけのこ状のお菓子で、クッキーの生地の表面に程よい口溶けのチョコレートが二重にわたってコーティングされています。生地のクッキーは丁寧に形を整えながら焼くという「型焼」という当時日本初の手法を取っており、**明治様がどれほどの愛情を「たけのこの里」に注いでいるのか**がよくわかります。

しかしながら、たけのこの里という素晴らしいお菓子が発明される前に、明治様はとんでもない間違えを犯してしまいます。**「きのこの山」**という**完全出来損ないの商品**が発売されていたのです。たけのこの里に比べて**ポリポリと固く質感の悪いクラッカー**の先端に**適当にチョコを乗せただけ**という、なんとも言えないお菓子となっています。味も売り上げも旨さも人気さも全てにおいて「たけのこの里」のほうが1枚…いや**300枚上手**なのですが、悲しいことに**姉妹品**という括りになってしまっています。「たけのこの里」の爆発的ヒットの裏側で人気

元記事を表示

Flutter初心者が100日でアプリリリースするまでの記録

##この記事は
Flutterの初心者が100日後にアプリリリースするまでの軌跡()を綴ったものになります。
また、Flutterでアプリ開発をしてみて思った所感などを書いていきます。

Flutterからプログラミングやってみようかな? とか
アプリ開発始めてみようかな? とか
Flutterに少しでも興味がある方は特に是非読み進めてください。

##何故書こうと思った?
実はもう100日チャレンジを始めてから58日が経過しています。何故このタイミングなのか?
,,, 思いつきで書き始めました。

強いていうなら、今Flutterについて結構盛り上がっていると思うんですよ、Youtubeとかtwitterとか某フリーランスエンジニアの方とかね。それに乗っかろうかなと思ったわけです。

##開発者(筆者)スペック
専門学校で4年間プログラミング、データベース、ネットワーク等々を学び、今年の春から一部上場企業のWebエンジニアとして働いています。
研修中ですが、優しい先輩に囲まれ充実した日々を送っています。(なんか会社に提出する用みたいですね)

個人開発は、ちょうど約2年ほど前から初め

元記事を表示

LINE Developer Meetup for Android #62 メモ書き

[【Online】LINE Developer Meetup for Android #62](https://line.connpass.com/event/173284/) で気になったところだけメモ。
(最近メモばっか書いてんな…)

# APKファイルはいかにして作られるのか

– Android は端末の種類が多くて実行環境がコレ!って決まってないから JVM 上で動くやつ(.dex)を実行する
– コンパイル
– aapt2: AndroidManifestとリソースファイル
– *.flat を生成
– R.java
– proguard-rules.pro
– R8 & D8
– classes.dex を生成
– コード圧縮
– リソース圧縮
– 難読化
– 最適化
– desugar(D8がやってくれる)
– 署名
– debug は AndroidStudio が自動で生成してくれた

元記事を表示

【Web2App】ウェブページからアプリで開くをFirebase Dynamic Linksを使って簡単に実装する方法

# 概要
WEBからAPPに誘導する所謂Web2AppをFirebase Dynamic Linksを利用して
インストールしている・していないに関わらず一つのリンクで挙動を変えて
インストールされていない場合はストアに、されている場合は特定のページに遷移させる流れをざっくり書いておきます。

詳しいことは公式ドキュメントに書いてあるのでこちらを見てください。
[Firebase Dynamic Links](https://firebase.google.com/docs/dynamic-links?hl=ja)

# page.linkの作り方
1. FirebaseコンソールのレフトメニューからDynamicLinkに遷移
2. 使いたいドメインを入力(小文字と数字のみを含む 3~100 文字で****.page.linnkの形で入力)

※適当にやっちゃうと、消したあとそのドメインは1ヶ月間使えないので慎重に

独自ドメインを使った方法もあるので使いたい方は公式ドキュメントを見てください
[Dynamic Links のカスタム ドメインを設定する – Firebaseの公式ド

元記事を表示

[Android] Room (SQLite) でテーブルからビューを生成する

# はじめに

SQLite のラッパーライブラリである Room を利用して、あるテーブルからビューを生成してみたいと思います。今回は 2つのテーブルから、1つのビューを生成しようと思います。次のような User と Repo という 2つのテーブルを作成し、そこから UserRepo という 1つのビューを生成する感じのものです。

[![Image from Gyazo](https://i.gyazo.com/4cc55989b9e7474e605fb71ba14ce0f2.png)](https://gyazo.com/4cc55989b9e7474e605fb71ba14ce0f2)
※ ビューを生成するだけために UserId を主キーとする User と Repo のテーブルを定義してます。内容に関しては意味があるわけではありません。

# 準備
Roomのセットアップ方法は[[Android]Roomを使ったサンプルと解説](https://medium.com/kaleidot725/android-room-を使ったサンプルと解説-a3f2ed978af4) で紹

元記事を表示

コピペでできるチュートリアル風TextView(android)

![dynamic_textview.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/367893/536eedd3-2dba-29f6-740d-258297197490.gif)

文字列が動的にカタカタと追加されていって、もう一度クリックするとまとめて表示する、といったtextviewの拡張を実装しました。
手軽なライブラリとかありそうですがどうなんでしょう
まずコピペすべくコードは

“`kotlin:TextView.kt

import android.os.Handler
import android.widget.TextView

fun TextView.showTextDynamically(text: String, milliSec: Int, afterShow: (() -> Unit)? = null): (() -> Unit) {
val charArr = text.toCharArray()
var isShowing = false

元記事を表示

Kotlin, LiveData, coroutine なんかを使って初めてのAndroidアプリを作る(11) Firebase導入編(Firebase Analytics)

以下の記事の続きです。

[Kotlin, LiveData, coroutine なんかを使って初めてのAndroidアプリを作る(10)](https://qiita.com/kasa_le/items/5feb953cd50489c30c90)
[AndroidアプリでCIツール-Jenkins/CircleCI編](https://qiita.com/kasa_le/items/fab191326b42f5adb82d)

かなり時間が空いてしまいました。
Flutterにだいぶ浮気していました(笑)

よろしければご覧下さい。
[FlutterアプリをPlayストアに登録してみた](https://qiita.com/kasa_le/items/2013d63adb026dee9305)
[FlutterアプリをiOS版ビルドに必要な手順のまとめ(debug/release)とTestFlightに上げるまで](https://qiita.com/kasa_le/items/fed9f25b92091bd162ce)

他にもFlutter記事を多数上げています。

さて、F

元記事を表示

コピペでできるボタン連打防止(android)

![disable_repeat.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/367893/47da233c-af36-8d6e-e42b-7fcd281e85e2.gif)

上記は一度クリックされたら2000msだけクリックを禁止しています。
isEnabled = falseにしたりtrueにしたり、あまり綺麗ではないので拡張しました。

“`kotlin:Button.kt

import android.os.Handler
import android.widget.Button

fun Button.disableClick(milliSec: Int) {
// clickの制御
if (!this.isEnabled) {
return
}
this.isEnabled = false
Handler().postDelayed( {
this.isEnabled = true
}, milliS

元記事を表示

一部Android端末でeventからlayerXを取得できない

# 経緯
HTML5のcanvasを使用してブラウザから操作できるお絵かきツールを作成中、iOS端末のSafariでは取得できた座標情報(layerX,layerY)が**undefined**になってしまい、動作しないことを確認

以下のようなイベントリスナーでユーザのタッチイベントを取得していたが、iOS/SafariとAndroid/Chromeでは取得するイベント情報が異なっている

“`canvas.js
canvas.addEventListener(‘touchmove’, (e) => {
drawing(e.layerX, e.layerY);
});
“`
# 原因はChromeが参照するTouchイベントにlayerX、layerYの座標位置が存在しない
ChromeとiOSでは取得するイベントが以下のように異なっていた。

・Chrome:Touchイベント
・iOS:Mouseイベント

# 対策
以下のように参照するイベントをハンドリングすることでiOSおよびChromeの双方で座標情報を正しく取得することが可能

“`canvas.js
ca

元記事を表示

【Android】ActivityとFragmentへコールバックできる汎用ダイアログを作る

#説明
ActivityとFragmentから使用でき、ボタンは縦並びで何個でも追加できる設計とします。
このような見た目になります。
Screenshot_1589356952.png

#1.レイアウト
##1-1.DialogFragmentにinflateするレイアウトファイル
“`fragment_vertical_button_dialog.xml

元記事を表示

OTHERカテゴリの最新記事