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

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

Androidの画面向きを固定した際に出るワーニングを無視する

`AndroidManifest.xml` で画面の向きを固定しているとWarningが出るようになりました。

> Expecting android:screenOrientation=”unspecified” or “fullSensor” for this activity so user can use the application in any orientation and provide a great experience on Chrome OS devices

どの向きでも使えるようにしたほうがユーザ体験がいいので `unspecified` か `fullSensor` を使うことを推奨するWaningなので、画面を固定しなければならないアプリではWarningを無視するパラメータを追加すると良いと思います。

“`AndroidManifest.xml
// tools:ignore=”LockedOrientationActivity” で無視
// 全体的に無視したい場合はapplicationで設定

元記事を表示

【Flutter】アプリ開発_初心者のアプリをプロっぽくする最強のpackegeを紹介

# はじめに
2020年の元旦からFlutterの勉強を開始し、無事2ヶ月で見た目がそれなりのアプリを作ることができるようになりました。これは、すごい方々が作ったパッケージを使用したおかげです。今回、私が使ったパッケージ・使わなかったけど、いいと思ったパッケージをまとめていきたいと思います。初心者がそれなりの物を短時間で作るにはすごい方々が作ったパッケージをどれだけ知っているか・そしてそれをいかに組み合わせられるかが重要だと思うからです。下記が私が紹介するパッケージで作った、アプリです。もし、インストールしていただけたら嬉しいです。評価してくださると泣いて喜びます。
次へ

元記事を表示

THETAプラグインでライブプリビューを扱いやすくする

## はじめに
リコーの @KA-2 です。

弊社では[RICOH THETA](https://theta360.com/ja/)という全周囲360度撮れるカメラを出しています。
RICOH THETA VRICOH THETA Z1は、OSにAndroidを採用しています。Androidアプリを作る感覚でTHETAをカスタマイズすることもでき、そのカスタマイズ機能を「プラグイン」と呼んでいます(詳細は本記事の末尾を参照)。

今回は、hogehoge認識と共に、認識結果に合わせた露出補正や、認識をトリガーに撮影なども行うTHETAプラグインが作成しやすくなる”土台”のプロジェクトファイル一式を作成したので紹介します。
2020年2月15日~2月16日に開催された[TMMF2020(Tsukuba Mini Maker Faire 2020)](https://tmmf.jp/2020/)で、デモンストレーションしていた「Tensor Flow “Lite” でObject Detectionして、カメラが固定されて

web3j を使って Android アプリから Ethereum につないでみるテスト

Android アプリからイーサリアムにつないでテストするまでの簡単な手順をまとめてみました。
イーサリアムクライアントとして、[**web3j**](https://github.com/web3j/web3j/) を利用しています。

「ややこしい話は抜きだ!」という方は、[**GitHub**](https://github.com/hakumai-iida/StudyWeb3j) に手順後のプロジェクトが置いてあるのでお使いくださいませ。

では、サクサクいきましょう。

# プロジェクトの作成
Android Studio を起動して新規プロジェクトを作成します。
![ss000.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/596438/673db2b8-a6f9-1456-b032-ea5832400730.png)

アプリ名は **StudyWeb3j**、プロジェクトフォルダは適宜、あとはデフォルトで。
![ss001.png](https://qiita-image-store

[Android Virtual Device / Chrome OS] Android Virtual DeviceでChrome OSを起動してAndroidアプリを動かす

どうもこんばんわ。休校になったので学期末テストなくなりました。

# なぜ起動しようと思ったのか(特に読む必要なし)
Android Studioを3.6に更新したあと、なぜか赤線(~~~)が増えました。
ちなみにここの部分です(kotlin)

“`kolin
requestedOrientation = ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE
“`

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/409918/29d3a815-2c70-bb43-54f1-20411ed52da6.png)

> you should not lock orientation of your activities , so that you can support a good user experience for any device or orientation

これは画面を回転させたいときに使

View Binding入門

Android Studio3.6がリリースされてView Bindingが使えるようになりました。
使ってみましたが、めちゃくちゃ簡単です。
DataBindingのときのようにで囲う必要なく、xmlが生成されたらBindingのクラスが生成されます。
では、使い方を見ていきましょう。
# 使い方
使い方は全て[Android DevelopersのView Binding](https://developer.android.com/topic/libraries/view-binding)のページに書いてあります。
ここ見れば十分です。
解説記事なんて必要ないです。
リファレンス読みましょう
# まとめ
View Bindingすごい簡単ですね!
これからは基本的にView Binding経由でViewの操作はしようと思います。

シンプルなActivity + ViewModel + CustomViewのTemplate例

アプリ作成が中盤に差し掛かると、新規画面を作る際に以前作ったファイルと似たようなファイルをいっぱい作らないといけないとかなりがちですよね。そんなときはTemplateを作って右クリック一発で必要なファイルを作れるようにすると便利です。

# ファイル構成

これはActivity + ViewModel + CustomViewの構成のTemplateの例です。追加するpackageを右クリックしてテンプレートを追加する動作で動きます。

“`
.
├── globals.xml.ftl
├── recipe.xml.ftl
├── root
│   ├── res
│   │   └── layout
│   │   ├── activity.xml.ftl
│   │   └── view.xml.ftl
│   └── src
│   └── app_package
│   ├── Activity.kt.ftl
│   ├── ActivityModule.kt.ftl
│   ├── View.kt.f

Ionic Androidのローカルプッシュ通知はアイコンの設定が必要だった(Capacitor)

#はじめに
IonicでCapacitorを使ったローカルプッシュ通知の概要は以下より:point_down:
[Ionic ローカルでプッシュ通知のテスト (Capacitor)](https://qiita.com/kokogento/items/89ed0973d21d71c7ee15)

iOSの場合は何もしなくても勝手に通知アイコンが設定されるが、**Androidでは少し設定が必要。**
ローカルプッシュ通知ではない、普通のプッシュ通知でもそれは同じ。:point_down:
[Android Push通知のアイコンを作成 + 設定](https://qiita.com/kokogento/items/9e91075855779285e6ac)

もし設定していないとこんな感じになる

スクリーンショット 2020-03-03 17.13.34.jpgEssential PhoneにAndroid 11 Developer Previewを焼いてみた。

#概要
EssentialのGitHubのリポジトリにROMがビルドできる状態で公開されており、Essential倒産後もAndroid 11のROMの対応をEssentialの人がしてくださっている。ビルドされたものが公開されており、今回はそれを焼いていきたいと思う。手順自体は簡単でRedditの記事やGitHubのリポジトリを参照するほうが正しいと思う。というかRedditに書いてある手順のそのまま。

実際に焼いた感想はこちら。
[Essential PhoneにAndroid 11 Developer Previewを焼いてみた。(note)](https://note.com/8blank71/n/n47e8216f9f53)

Reddit
[Android 11 GSI confirmed working on the PH-1 with today’s vendor image release!](https://www.reddit.com/r/essential/comments/faozh8/android_11_gsi_confirmed_working_on_

FlutterとFirebaseで開発した 英語の瞬間翻訳トレーニングアプリ Lala の技術

どうも、[shohei](https://twitter.com/hobbydevelop)です。

大阪在住のフリーランスエンジニアです。現在はFlutterやReact Nativeを使ってプロダクト開発をしています。

今回はFlutterとFirebaseで開発した英語の瞬間翻訳トレーニングアプリ Lala の技術を紹介します。

アプリはこちらからダウンロードできます(無料でご利用できます)。

・iOS
[https://apps.apple.com/jp/app/id1493691416](https://apps.apple.com/jp/app/id1493691416)

・Android
[https://play.google.com/store/apps/details?id=com.gmail.hukusuke1007.lala](https://play.google.com/store/apps/details?id=com.gmail.hukusuke1007.lala)

## 概要

まずはLalaの概要を紹介します。アプリストアの情報をそのまま

エンジニアがデザインを正確に確認する方法

# 背景
自分はiOSのエンジニアである。

UI周りの実装を行うときには、デザイナーからデザインデータをもらい、デザインツールでMarginやFontなどを確認しながらデザイン通りに実装を行う。実装が終わったら自分で再度デザインが間違っていないかを確認して、最後にデザイナーに確認してもらう。

しかし、デザイナーの確認のときに高い確率で「元のデザインとここが違うよ〜」ってデザイナーから指摘を受けて修正を行うことが多い。

例えば、「LabelのTextのlign-heightが違う」や「アイコンのbaseLineが少しずれている」などである。デザインデータは細かく見ているつもりだが、見落としてしまうことがある。。。

何度もデザイン確認を行っていたら、実装とデザイナーの時間が勿体ない。

## 書くこと
**エンジニアがデザインを正確に確認する方法について**

# 方法
**デザインデータと実装したスクリーンショットを合わせて、違いがないかを確認する!!**

## 例
赤色の枠のCellを実装する。([元データ – figmaresources](https://www.figm

OpenVPNサーバ構築(CentOS7) for Android(tun)

(2020.03.03追記)server.confの置き場所とta.keyのパス指定、およびsystemctlへのサービス登録が適切でなかった為、追記変更しました

Android端末から接続できるopenvpnサーバを自前で立てたいケースがあったので記載します。理解が曖昧な所が多かったので調べながら書いていきます。

VPNサーバの先に別セグメントのネットワーク(ファイルサーバ等)があり、そこにも接続したいとします。取り急ぎのテレワーク用などに。

この記事を書いている時点でAndroid向けOpenVPNクライアントはtun方式(ルータモード)のみ対応となっていますので、その方式で構築します。

記事中の下記項目は、適宜自環境のものに読み替えてください。

+ VPNサーバ
+ IPアドレス(192.168.1.1)
+ ポート番号(11940) ※デフォルトから変更しています。
+ VPNサーバ側ネットワーク(192.168.1.0/24)
+ VPN側ネットワーク(10.8.0.0/24)
+ ファイルサーバネットワーク(192.168.2.0/24)

手順概要

RICOH THETA V の動画ファイルサイズを極限まで削ってみる

# この記事について
リコーが販売している全天球カメラ [THETA](https://theta360.com/ja/) の Plugin のサンプルをいじり、録画した動画のファイルサイズが削減できないか試してみます。

# THETA
## THETA とは?
リコーが販売している全天球カメラです。
上位モデル(V/Z1)は、内部のOSとして Android が試用されており、Androidアプリ(THETA用語では”Plugin”)を開発すれば THETA を自由に操作できるという、素敵なものです。
なお、下位モデル(S/SC/SC2)でも、Pluginほどの自由度はないですが、内部で動作している REST API を使用すればそれなりの操作はできるようです(試していない)。

詳細は以下をご参照ください。

– THETA の製品情報
– https://theta360.com/ja/
– THETA の開発の情報
– https://api.ricoh/products/theta-jp/
– https://qiita.com/organizations/theta

エンジニアとマネージャーは似ているのかもしれない~設計・開発で考えていること~

私はアプリ開発をしているエンジニアですが、コードを書くときクラスを「人」として考えています。
xxActivityはxxを表示する人、ooUtilsはooをする人など。
周りのエンジニアやPMにこのことを話したら「分かる」という賛同や「そう考えて設計してるんですね」という感想「そういう考えがあるのか」というフィードバックをもらったので、文章に起こしてみようと思います。

先に断っておくと、私は多種の開発に関わったことも、マネージャーとしての知識も多くはありません。
的を絞って話すため、これのこと考えられてないじゃん!ということもあるかもしれませんが、優しい目で見ていただけると幸いです。

# Introduction~自社ビル建ててと言われたら~
Aさんという名前のあなたはとあるIT企業で働く普通のエンジニアです。
ある日社長からこう言われます。
社長「Aさん、うちで新しく建築事業部を立ち上げるんだけど、明日からそこの責任者になってくれない?
まずはお試しでうちの新しい自社ビルを建ててほしい。
この資料のようなビルが良くて、期間は長くて2年ぐらい。」
あなた「・・・」

どうでしょう。

AndroidのBLEのstartScanとstopScan同じCallbackインスタンスを渡すこと

# これだとStopできない

private fun bleStartScan() {
BluetoothAdapter.getDefaultAdapter().bluetoothLeScanner.startScan(object : ScanCallback() {
})
}

private fun bleStopScan() {
BluetoothAdapter.getDefaultAdapter().bluetoothLeScanner.startScan(object : ScanCallback() {
})
}

## こっちだとStopできる

private val scanCallback = object : ScanCallback() {
}

private fun bleStartScan() {
BluetoothAdapter.getDefaultAdapter().bluetoothLeScanner.start

Android SIP アカウント設定

# 標準の通話アプリで設定する方法

1. Android 標準の通話アプリを開く(電話とか)

2. 右上のメニュー(点が縦に三つ並んでるやつ)から「設定」を開く

3. 「通話アカウント」を選択
> もしかすると「通話」がメニューにあって、それのあとに「通話アカウントがあるかも」

4. 「SIPアカウント」を選択

5. 「+」(追加)を選択

6. アカウント情報を入力する

(例) SMARTalk の場合

|項目名|内容|
|:—:|:—:|
|ユーザー名|電話番号から 050 を除外した番号|
|パスワード|XXXXXXXX|
|サーバー|smart.0038.net|

7.「保存」を選択する

8.「通話できるアカウントを選択」で「すべての通話アカウント」を選択

9. 「インターネット通話を使用」で「すべての通話」を選択

10. 「インターネット通話の着信を受ける」をONにする

> 着信、発信の確認して終了

# あとがき

いつか、画像をつけたい。
OS や機種によって、少しメニューなどが異なるかも。

初心者の初心者による初心者のためのAndroidアプリ開発2

#はじめに
前回に引き続きAndroidアプリ開発について挑戦していきましょう。継続して勉強していると、なんとなく書いていたコードの意味が少しずつですが、考えて書けるようになってきました。しかし、ただ継続するだけだと辛くなってくると思います。そのため、今回は**実際に見たことがある**ようなワンシーンを作るコードを勉強していこうと思います。実際に見たことあるようなものが作れると達成感がありモチベーションアップにもつながると思います。

#リスト画面の作成
まずは、商品の一覧をリスト表示するコードから書いていきます。ただ商品を羅列するだけでは味気がないので、商品名と値段が2行で表示されるようなリストを作成したいと思います。

res/values/string.xml

~~~md



Online Shopping

RecyclerViewをするするっとした時にどれぐらいViewが表示されているか確認する

# スクロールして、Viewが50%表示されたら何かするみたいな需要があるらしい

動画広告が自動的に再生されたりするあれですね。はい。

# 結論:こんな感じでどうでしょう

“`kotlin:ViewExt.kt
fun View.visiblePercentage(): Int {
val visibleRect = Rect()
getLocalVisibleRect(visibleRect)

return round(((visibleRect.right – visibleRect.left) * (visibleRect.bottom – visibleRect.top)).toFloat() / (width * height) * 100).toInt()
}
“`

# 可視化

![out.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/69858/14501b02-86a6-8365-ff1c-62ec70fb6926.gif)

きれいですね。

#

DroidKaigi2020の発表予定資料をまとめてみた

# はじめに
中止に終わってしまったDroidKaigi2020ですが、
登壇予定の方々が発表予定だった資料を公開してくれています。
Twitterであれこれフォローしていてもうまく集めれていないですが、
ひとまずちょっとずつ集めていきます。

[DroidKaigiのTimetable](https://droidkaigi.jp/2020/timetable)順に並べています。
タイトルはTimetableの概要にリンクを貼っています。

# Day1(2020/2/20)

### 10:20-11:00
#### [Jetpack時代のFragment再入門](https://droidkaigi.jp/2020/timetable/155510)
[資料](https://t.co/5UUrsdgt12?amp=1)

### 15:00-15:40
#### [MDCの内部実装から学ぶ 表現力の高いViewの作り方](https://droidkaigi.jp/2020/timetable/156210)
[資料](https://speakerdeck.com/seto

【Android】 キーボードのレイアウト押し上げ設定が反映されない。

# はじめに
**「キーボードを出すとEditText下に配置しているviewが隠れて見えなくなっちゃう。」**
っていうバグを直すのに、めちゃくちゃ時間かかった。
結局とても限定的な場面でだけ発生する事案だったんだけれど、ハマると全然気付けなさそうな原因だったので共有。

## どんな状況?

EditTextの下に表示させている”0/1000″がキーボードで隠れているのがわかる。

これじゃ全くカウンターの意味がない。
キーボード表示中も見えるようにしておきたい。

## 調べると

めちゃくちゃ出てくる。

【参考】
https://qiita.com/bird_tummy/items/3709d607c4ec88ad9e71
http://furudate.hatenablog.com/entry/2013/07/