- 1. Flutterウィークリー #82
- 2. [Android / Kotlin] 画面回転無効時でもセンサーを使って回転できるようにする
- 3. React Nativeのviewpagerで現在のpageの位置を取得する(Androidのみ動作確認済み)
- 4. 【Kotlin】ギャラリーから画像を選択して、ImageViewに表示する
- 5. Android Studio 4.0 新機能 (Canary 1)
- 6. Android端末からMacのlocalhostに接続する際に苦戦した件
- 7. WebView で forceDark を設定した時のメモ
- 8. [Android] Disk Fullって怖いよね
- 9. [Android]初歩的なログの制御を理解しよう
- 10. 【独学】React Nativeを初心者が学習してみた part1
- 11. Android/iOSアプリのアーキテクチャ検討
- 12. Kotlin resの話
- 13. Android Studio 3.5.1でSync Project with Gradle Filesが見つからない件
- 14. 【Flutter】 アプリ開発入門 Hello Flutter!!
- 15. 今の時代はAPKをコマンドで署名するなら、jarsignerではなくapksignerを使う
- 16. (非Root) Android版LINEが溜め込んでいる画像を削除する
- 17. Android Dev Summit ’19で紹介されたサンプルから学ぶ、AndroidのTheme、Style、Colorの設定方法
- 18. Medium on Android で GoldenDict を使う
- 19. Glide4系のDiskCacheについて
- 20. Firebase Dynamic Linksによる起動時の細かい挙動メモ
Flutterウィークリー #82
# Flutterウィークリーとは?
FlutterファンによるFlutterファンのためのニュースレター
https://flutterweekly.net/この記事は#82の日本語訳です
https://mailchi.mp/flutterweekly/flutter-weekly-82※Google翻訳を使って自動翻訳を行っています。翻訳に問題がある箇所を発見しましたら編集リクエストを送っていただければ幸いです。
# アナウンス
### Flutter Interact –日付を保存します
https://events.google.com/flutter-interact/
Flutterチームによる新しいイベント。今回はニューヨークで開催され、全世界に向けて生放送されます。# 読み物&チュートリアル
### Over the Rainbow –カラーフィルター
https:/
[Android / Kotlin] 画面回転無効時でもセンサーを使って回転できるようにする
どうも。こんばんわ
今回は画面回転無効(画面固定)のときでも回転できるようにしようと思います。### そういえばdocomoのFOMAが2026年に終わるみたいですね。
私の初ケータイは4G(XiだっけPremium 4Gだっけ)でしたのでセンター問い合わせはやったことないです。
うまく行けば来年には3G/4G/5Gの3世代の通信規格が出るのかあすげえなあ。それと今回の話が関係あるかって話ですが、
なんとなく買ったガラホ(SHARPさんのNP601SH / Softbank)ってあれ画面回転しないんですね。
純正のアプリなら行けるけど私は[自作](https://play.google.com/store/apps/details?id=io.github.takusan23.tatimidroid&hl=ja)のアプリで回転させたいの!# センサー使えばできそう
調べると同じようなことをやりたい人がいましたが何やってるのかまじでわからんかった。
いろいろ調べたんですがドキュメント
https://developer.android.com/guide/topics/sen
React Nativeのviewpagerで現在のpageの位置を取得する(Androidのみ動作確認済み)
# やりたいこと
ReactNativeのviewpagerで現在のpageの位置(何番目のpageか)を把握。
https://github.com/react-native-community/react-native-viewpagerなぜやりたいかというと、viewpagerがdots(現在の位置が一目でわかる下部にある点)をAndroidではデフォルトでサポートしていなかったので自作しようとしたからです。
# 実装まで
ドキュメントを読んだところ
onPageSelected
というPropが使えそうと思ったので試しました。
ただ、トップページには使用例がないので、サンプルを確認
https://github.com/react-native-community/react-native-viewpager/blob/master/example/ViewPagerExample.js大抵ReactNativeのライブラリにはexampleのファイルがあります。
# 実装
簡素化しています。“`javascript
import ViewPager fro
【Kotlin】ギャラリーから画像を選択して、ImageViewに表示する
公式サイトを参考に、ストレージ アクセス フレームワーク(SAF)を使用する。
[ストレージ アクセス フレームワークを使用してファイルを開く | Android Developers](https://developer.android.com/guide/topics/providers/document-provider?hl=ja)コードはGitHubに載せています。
https://github.com/orimomo/picture-frame-app/tree/master# 1. ギャラリーを表示する
## コードと解説
“`kotlin
private fun selectPhoto() {
val intent = Intent(Intent.ACTION_OPEN
Android Studio 4.0 新機能 (Canary 1)
# はじめに
[Android Studio 4.0 Canary 1](https://developer.android.com/studio/preview) が出たので、個人的に気になった新機能をまとめました。
マサカリ(こっそり)お待ちしてます :hocho:– 参考
– [Android Studio 4.0 Canary 1 available](https://androidstudio.googleblog.com/2019/10/android-studio-40-canary-1-available.html)
– [What’s New in Android Studio (Android Dev Summit ’19)](https://youtu.be/XPMrnR1_Biw)# Jetpack Compose のサポート
Jetpack Compose に対応しました!!
IDE上でプレビューを見ることができるので、確認しながらサクサク書けます。Jetpack Composeって?? という方は[こちら](https://develo
Android端末からMacのlocalhostに接続する際に苦戦した件
# やりたいこと
Android端末からMac Book Airのlocalhostにアクセスしたい。Mac Book AirでWebページを開発中。Android端末とMac Book AirをUSB接続し、AndroidのChromeにて、http://localhost … とアクセスするとlocalhostにアクセスできる状態にする。
# 環境
“`
Mac OS: Mac OS 10.14.3
Android: バージョン7.0
端末機種: FTJ162D
“`# 苦戦した箇所
USBケーブル不良でAndroid端末を認識しなかったのが要因であった。
どういう場合に、USBケーブル不良を疑うべきか記録する。# 実施したこと
### Mac Book AirがAndroid端末を認識しているか知りたい
1. [Android File Transfer](https://www.android.com/filetransfer/) をインストール
2. `Android File Transferを起動。
3. 以下の画面が表示された場合、Mac
WebView で forceDark を設定した時のメモ
Android の WebView で forceDark を適用するのに調査したので、メモとして残します。
WebView で forceDark を使う場面自体少ないかと思いますが、WebView で表示させてるプライバシーポリシーやライセンスの画面を黒くするために調査しました。
## Light テーマの場合
`Theme.AppCompat.Light` など DayNight テーマを使用していない場合はアプリのテーマに `android:forceDarkAllowed=”true”` を追加することで WebView を強制的に黒くさせることができます。
この方法の場合はアプリのテーマで強制的に色を黒くさせるため、必要な画面のみ適用させる必要があります。
## DayNight テーマの場合
デフォルトではテーマなどの `forceDarkAllowed` を参照して黒にするかを切り替えるようになっていますが、 DayNight テーマを使用している場合は `forceDarkAllowed` が適用されないため、`WebSettin
[Android] Disk Fullって怖いよね
Androidでは、基本的にシステムもアプリも永続的データは`/data`パーティションに書き込む。
そのため、システムの最低限の動作が継続できるように、アプリがデータを書きすぎないための仕組みがいくつか入っている。
本記事では、それらの仕組みについて紹介する。
なお、ソースコードは下記のバージョンを参照している。
– Android: android-10.0.0_r5
– Linux kernel: 5.3.7
– e2fsprogs: 1.45.4# 1. ストレージの空き容量を確認するAPI
## `File#getTotalSpace()`, `File#getFreeSpace()`, `File#getUsableSpace()`
いずれも最終的にはJNIで`statvfs(3)`を、すなわち`statfs(2)`を呼び出す。
`File#getTotalSpace()`は`statfs.f_blocks * statfs.f_bsize`に相当し、パーティションの全サイズを返す。
`df /data`したときの`1K-blocks`と一致する。`Fi
[Android]初歩的なログの制御を理解しよう
# はじめに
Androidではandroid.util.Logを使うことでLogcatにログを出力できます。
LogcatとはAndroid Studioに表示されている次のウィンドウのことです。android.util.Logは簡単に使えるのでなんとなく仕様を理解しているそんな方も多いと思います。
筆者もその一人なのですがログの仕組みを理解してよいログを書けるように知識をまとめたいと思います。![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/79387/7272b175-ac20-d8ec-c03f-607c6612619c.png)
# どうやったらログを出力できるのか?
まずはログをどうやったら出力できるのかというところだと思います。
android.util.Logでは次の2種類の方法でログを出力できます。## (1) ログレベルごとに定義される関数を利用する
次のようにLogでは各レベルのログを出力するための関数が用意されていて
簡単に特定のレベルのログを出力
【独学】React Nativeを初心者が学習してみた part1
# はじめに
筆者のプログラミング学習歴は独学で5ヶ月ほど。
普段はRuby on Rails5を学習している初学者の私が、面白そうなのでReact Nativeを学習してみることにした。
iOSアプリ作ってみたいし、ついでにReactも学べばRailsで作ったWebサービスのフロントエンドが充実するかもしれない!といった安直な考えだけで学習を始めてしまったのだが、本当にこれで良かったのか…。
その答えはいずれ私がReact,React Nativeを習得した時にわかるだろう。# React Nativeとは何か
[公式サイト](https://facebook.github.io/react-native/)や様々なqiitaの記事を読み漁ったが、[こちらの記事](https://qiita.com/Iwark/items/7c27e919bb71f8b256f6)にわかりやすくまとめられていた。
要は、React NativeはReactをモバイルでも使えるようにしたもの。
そしてそのReactはJavaScriptのフレームワークということ。
現時点ではこの程度しか理解で
Android/iOSアプリのアーキテクチャ検討
# はじめに
アプリのアーキテクチャというと、僕が一番はじめに思い浮かぶのはMVCとかMVP、Fluxみたいな
今回のアプリでどのパターンを採用するかという点です。
ただ、現場でそのパターンだけ考えれば良いかというとそれ以外の部分に対しても
もっと検討することが多くて、何を検討するかがまとまっていないことが多いので、
自分の備忘録としてまとめてみることにしました。# お題
・アプリが起動したらQiitaの記事の一覧を表示できる
・記事をタップしたら、Webのページで記事の内容を閲覧できる
・どの記事を見たのか、履歴を確認できる
・どんな記事を見たのか集計して、アプリの改善に使いたい
・(簡単にするため、認証はなし)というQiita閲覧アプリで考えてみます
# 要素を分解してみる
> アプリが起動したらQiitaの記事の一覧を表示できるアプリQiitaのAPIを使った通信が必要。
https://qiita.com/api/v2/docs#投稿APIはJSONなので、JSONを解析できるライブラリがあると楽そう。
リスト表示であれば、標準コンポーネントで十分。> ・
Kotlin resの話
# KotlinでのAndroidアプリ開発
参考文献
[App resource overview | Android Developers](https://developer.android.com/guide/topics/resources/providing-resources)## res(リソース)ディレクトリの話
プロジェクト作成時に生成されるresディレクトリとその中身
– res
– drawable
– layout
– mipmap
– values他にもmenu, fontなどのリソースディレクトリがresディレクトリ内でサポートされている.しかし,menuなどのリソースディレクトリを活用したい場合は自分で作成する必要がある.
### drawableについて
一般的に,画面上に描画するグラフィックを保持.
.png, .jpg, .gifなど.### layoutについて
ユーザーインターフェース(UI)のレイアウトを定義するXMLファイルを保持.### mipmapについて
さまざまなランチャーアイコ
Android Studio 3.5.1でSync Project with Gradle Filesが見つからない件
# 結論
ありました。
File -> Sync Project with Gradle Files
![sync.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/85631/73acb547-850e-6d69-280b-eb8818b6ad92.png)# ヘルプなどが改善されてなかった
[Android Gradle プラグインのリリースノート|Android Gradle プラグインのアップデート](https://developer.android.com/studio/releases/gradle-plugin?hl=ja#updating-plugin)
>Android Studio のメニューバーから [Tools] > [Android] > [Sync Project with Gradle Files] をクリックします。
ないし
![sync2.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com
【Flutter】 アプリ開発入門 Hello Flutter!!
# この記事で紹介すること
FlutterのSDKインストールから、Hello Flutterアプリ開発までを紹介
1. FlutterSDKインストール
2. Android Studio にFlutterプラグインのインストール
3. Android Studio にDartプラグインのインストール
4. Hello Flutterアプリ起動※私自身すでに、Xcode、Android Studioはインストール済みでしたので、そちらはインストールを済ませておいてください。
# Flutterとは
[Flutter](https://flutter.dev/)は、Googleによって開発されたモバイルアプリケーションSDK
↓↓↓公式サイトから引用↓↓↓
“`
Flutter allows you to build beautiful native apps on iOS and Android from a single codebase.
(Google翻訳: Flutterを使うと、iOSとAndroid上で単一のコードベースから美しいネイティブアプリケーショ
今の時代はAPKをコマンドで署名するなら、jarsignerではなくapksignerを使う
# あらすじ
現場ではAndroid TVの開発をやっているのですが、シェルスクリプトで署名済みのAPKを作ろうとした時に、jarsignerだとエラーが出るなどしてうまくいかなかったので、色々調べてみました。
# jarsignerで署名ができないパターン
どうやらAndroid 7.0以上ではできないらしい。
[Android 7.0 以上では jarsigner ではなく apksigner で署名する | メモ帳](https://egg616.com/%E6%8A%80%E8%A1%93%E3%83%A1%E3%83%A2/post-121/)公式のページを見ても、apksignerについてのみ記載されていた。
[apksigner | Android Developers](https://developer.android.com/studio/command-line/apksigner?hl=ja)# 事前準備
Android SDK Build Tools のリビジョン 24.0.3 以上で利用可能です。
事前にパスを通してお
(非Root) Android版LINEが溜め込んでいる画像を削除する
#スマホのストレージをLINEが圧迫している
今や日常のコミュニケーションツールとなったLINEですが長年使用しているとストレージをとんでもなく圧迫しますよね.私のXperia X Performanceの場合,LINEだけで5GB近くストレージを占有しています.本体ストレージが32GBでシステム領域がその半分ですから,如何にLINEが肥大化しているかがお分かりいただけると思います.
![Screenshot_20191103-104004.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/501664/2a52763f-23cf-7251-d226-1910a6d6d010.png)そんなLINEですが,主な保存ファイルは画像・動画のようです.そしてこれらはLINEの設定画面等から個別に削除することができません.(トーク丸ごと削除はできますが,画像だけ消して軽くしたいですよね)
※※ここから先はAndroid(LINE)のシステム領域へちょ
Android Dev Summit ’19で紹介されたサンプルから学ぶ、AndroidのTheme、Style、Colorの設定方法
Android Dev Summit ’19のDeveloping Themes with Styleで説明されているリソース定義の方法メモという感じで説明しようと思ったのですが、
全体的に、このリポジトリに入っている要素についての話が多かった、かつコードから参考になる部分が多かったので紹介していきます。
https://github.com/material-components/material-components-android-examples/# Themeの定義方法
Owlではピンクのテーマの中にブルーのテーマが出てきたりなど複数のベースのテーマを切り替えることができる仕組みがあります。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/27388/4580716d-1a57-33e3-eef1-80443cb09c25.png)Owlではそのピンクのテーマとブルーのテーマで共
Medium on Android で GoldenDict を使う
Medium で記事を読んでいると時折知らない単語が出てくる。そんなとき iOS であれば簡単に辞書を引けるのだろうが、あいにく Android ではこのへんのサービスレベルが低い。ブラウザ上ではアドオンを使って似たようなこともできるようだが、Medium の専用アプリを使っているとこの手も使えない。結局、範囲選択→コピー→アプリ切替→ペーストという冴えない動作が必要になる。[Look Up](https://play.google.com/store/apps/details?id=gaurav.lookup) を使うと英英辞典を引けるらしいが、日本語や非西欧言語は蚊帳の外のようだ。
Medium アプリでは共有メニューから選択範囲を辞書へ渡すことも一応できる。一応、というのは、実際に渡される文字列は “`“選択文字列” by AUTHORNAME https://link.medium.com/ARTICLEID“` となるからだ。これでは辞書を引くことはできない。英語以外の言語も扱う必要から、私は [GoldenDict](https://play.google.com/s
Glide4系のDiskCacheについて
ギガを食うのを改善したいとの要望がありGlideのDiskCacheを調査したときのログ
## TL;DL
– /data/data/app_dir/image_manager_disk_cacheに保存される
– キャッシュアルゴリズムはLRU(Least Recently Used)
– キャッシュ容量はデフォルトで250MB(250*1024*1024)## キャッシュの保存場所や容量について
#### デフォルトはinternalなimage_manager_disc_cacheディレクトリに容量250MBまで保存可
#### これらはGlideModuleを定義すれば変更可“`example.java
@GlideModule
public class YourAppGlideModule extends AppGlideModule {
@Override
public void applyOptions(Context context, GlideBuilder builder) {
builder.setDiskCache(new Exte
Firebase Dynamic Linksによる起動時の細かい挙動メモ
本当に細かい挙動の話です。
Firebase Dynamic Links(FDL)が起動されるパターンは以下があります
1. アプリ未インストール時、FDLによってGoogle Playからインストールされてから起動される場合
2. アプリがインストールされている時、FDLからアプリを直接起動する場合## 1. アプリ未インストール時、FDLによってGoogle Playからインストールされてから起動される場合
activity.intent.dataString は空になっており FDLの`FirebaseDynamicLinks.getInstance().getDynamicLink(activity.intent)`からでないとリンクが取得できない。
Google PlayやLauncherなどから起動されてくるので当たり前といえば当たり前なのですが、そうなります。
ちなみにFDLはどのようにリンクを取得してくるかというと、プロセス間通信によって、Google Play Servicesから取得しているようです。https://github.com/firebas