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

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

簡単なゲームを作ってみよう(Win or Lose)

#簡単なゲームを作ってみよう

[ドットインストール](https://dotinstall.com)の[はじめてのJavaScript](https://dotinstall.com/lessons/basic_javascript_v4)で「#11 簡単なゲームを作ってみよう」をやっあと、
ふと思い立ったのでFlutterで作ってみました。

#仕様

1. 5つのマスがあり、5つのうちランダムで1つが「Win」、4つが「Lose」になる。
2. 「Lose」が選択された場合、マスに”Lose!”が表示される。
3. “Lose!”が表示されるのと同時にマスが小さくなる。
4. 「Win」が選択された場合、マスに”Win!”が表示される。
5. “Win!”が表示されるのと同時にマスが青からピンクに変わり、回転しながら四角形から円にかわる。

こんなところでしょうか。
AndroidのDozeを回避してみようと思った話(回避できたとは言っていない)

# はじめに

DozeはAndroid6から導入された素晴らしいバッテリー消費抑制機能です。

内容としては、バッテリー駆動かつ、静止状態かつ、画面OFFの状態が一定時間続くとで端末をスヤァーっとお眠りさせてバックグラウンド処理をさせなくするものです。

無法地帯と化していたバックグラウンドでのアプリの処理に制限をかけた事によりバッテリーの消費量は大幅に減ったと思います。

一般ユーザにはありがたい機能ですね。

しかし、企業向けアプリにとってはちょっと厄介な機能だと思っています。

顧客からバックグラウンドで位置情報やセンサーデータを取り続けたいんだーと言われたらやるしかありません。

そこで今回は、色々な方法でDozeを回避できるか試してしいこうと思います。

# 施策

駄目だった施策も交えつつ一つずつ試した結果を説明します。

## 施策1:フォアグラウンドサービスで処理を行う

結論から言いますが、駄目です。

制限されるのはバックグラウンド処理だけだからフォアグラウンドとして動作するフォアグラウンドサービスは大丈夫じゃないか?と思ったら大間違いです。きっちりDozeの対

元記事を表示

ActivityResultContractのコードを少し読んでみる

Activity 1.2.0-alpha02 と Fragment 1.3.0-alpha02で追加されたAPIのようで、型安全にstartActivityForResultを扱えるようです。またテストもできるようです。

コード例
AppCompatActivityやFragmentで`prepareCall()`でlauncherを用意して、`launch`を呼ぶと`startActivityForResult`を行うことができるようです。

“`kotlin:MainActivity.kt
val intent = Intent(this, SecondActivity::class.java)
val launcher: ActivityResultLauncher = prepareCall(
ActivityResultContracts.StartActivityForResult()
) { activityResult: ActivityResult ->
Log.d(“MainActivity”, activityResul

元記事を表示

GIFアニメーションをImageViewで表示する

# はじめに
需要があるかはわからないですが、Gifアニメをこの度自プロジェクトでAndroidアプリ上で動かしたいという要望があったので調べました。

# 調べてみた
まずは、「Gif animation android imageview」などでググってみました。
すると・・・glideというライブラリを使うといいよ!
という記事がたくさん出てきました。

https://qiita.com/maehara08/items/eef63804c52b2e0bb404

それ以外だと、Movieクラスを使ってCanvasに一枚ずつ書き出して・・・みたいなゴリ押しパターンがありました。

弊社では、ライブラリを使うにはちょっと時間がかかるのと、外部の信用できる会社のものでないと結構たいへんなので、glideライブラリを使うというのは避けたかったので、ゴリ押しパターンを実装してみようということになりました。

# 準備
## Gifアニメのダウンロード
とりあえず

元記事を表示

FlutterでURLSchemeを使って他のアプリ(例: Twitter)を開く(開けない場合の回避策も)

Flutterで個人開発をしている[村松龍之介](https://twitter.com/riscait)と申します。
(仕事ではiOSアプリのネイティブアプリ開発を行っています)

今回は、アプリに自分のTwitterアカウントのリンクを載せようと思いました。
最初は普通にURLを貼って、ブラウザで開くようにしていたのですが、アプリ入ってるならアプリが開いた方が良いよね…と思い実装した備忘録です。

## URLを開くためにurl_launcherパッケージを使う
まず、URLを開くために必要な `url_launcher`パッケージを導入済みでなければ導入します。
[url_launcher | Flutter Package](https://pub.dev/packages/url_launcher)

簡単に書きますと、`pubspec.yaml`ファイルの`dependencies`に1行追記します。
VS Codeですと、⌘ + S で保存すれば`flutter pub get`が自動で走りますのでインストールできます。
Android Studioでもおそらく同じ?

元記事を表示

onConfigurationChangedで回転時のレイアウトを変更

##やりたかったこと
ImageViewの画像を画面いっぱい(アスペクト比はそのまま)に表示してかつ、ボタンを真下に置きたかったのですが、、、
![図1.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/420023/b3d8ab08-3421-03a5-c89d-3a7708243dc7.png)
横回転するとボタンが隠れてしまうし、横画面に合わせてレイアウト変えると縦回転したときにボタンの位置がずれてしまってました。
レイアウト用のxmlは1つだけにしたかったので、ソース内で動的にImageViewのサイズを変えることにしました。

##やったこと
####レイアウト
– レイアウトはConstraintLayoutを使う
– ImageViewの設定:
– サイズ(縦向き時):
– height: wrap_content
– width: 0dp(match constraint)
– サイズ(横向き時):
– height: 0dp(match

元記事を表示

Android単体でADBを使う。(迫真AARCH64部、Linuxの裏技)

## 注意

– 完全に単体でやるには開発者向けオプションにネットワーク経由でデバッグがないと無理。
– ネットワーク経由でデバッグがないと再起動する度tcpipを、使わざるを得なくなる…GoogleはAndroid12で改善してくれるのか!?

—-

本編:
プロローグ
`(Y)`ぬわああああああん疲れたもおおおおおおおん
`(M)`チカレタ…
`(Y)`じゃけん風呂入って寝ましょーねー
`(Y)`おっそうだな(自問自答)
_ここからベッドシーンへ…_
`(Y)`ファッ!このアプリADB権限いるのか!?
`(Y)`やめたくなりますよー……
`(M)`あっそうだ!Androidにadbぶち込んでやれば解決だゾ〜
`(Y)`それができれば苦労して ないです(断言) aarch64バイナリは提供されてない、はっきりわかんだね!
`(K)`や!、せんぱい! aarch64バイナリがありましたよ!
`(Y)`ファッ!(デデドン!) クゥーン?
`(M)`よし!じゃあ打ち込んでやるぜ!ゾ

_キューピー3分クッキングの曲の始まり_

# 本編

今回は中に入れます!(Archlinux

元記事を表示

Flutterを始めてListViewが難しい

# きっかけ

長期休みに入り興味があったFlutterを始めた。
いろいろやってみて、まずListViewにつまづいた。つまづいたポイントとして、

– クラスの使い方
– 要素のUIの構成
– どのように要素にデータを渡すか

がある。

開発はXamarinを軽く触ったことがある程度で、初心者。
書籍は[基礎から学ぶFlutter](https://www.amazon.co.jp/基礎から学ぶ-Flutter-石井-幸次/dp/4863542941)を購入し、[公式サイト](flutter.dev)も見ながらスタートしたFlutter超初心者。また、Flutterを開発するにあたって日本語の記事が異常に少ないので書こうと思った。これからも何かつまづくことがあればちょくちょく書く予定。

# ListView

ListViewとは要素をスクロールできる画面に表示していくウィジェット。
FlutterにはYoutubeに公式チャンネルがあり、多くのウィジェットの紹介動画があり、短く、見やすい動画となっているのでおすすめ。もちろんListViewの動画もある。