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

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

[備忘録]Java/Android 実行環境での改行コード取得

#改行コード

– CR: 復帰、\r
– LF: 改行、\n
– CR + LF: \r\n

\n とか \r はエスケープシーケンスで、16進数の数値にすると `0X0A`, `0X0D`らしい。
また、WindowsではCR+LF、unix系ではLF、MacOSではCRなど、実行環境によって使用する改行コードが異なる。

#実行環境での改行コード取得方法

“`java
final String BR = System.getProperty(“line.separator”);
“`

これで、(アンドロイドに限らず)このコードの実行環境でのエスケープシーケンスが取得できる。

##アンドロイドでの改行コード
↓実行してみた。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1139020/054ab9cc-5050-a576-b3ed-4c3e1bb9fb96.png)
アンドロイドでの改行コードは”\n”(LF)ということが分かった。

###(おまけ)(どうでもいい話)

元記事を表示

Jetpack Compose のアルファ版で作成したサンプルを1.0.0-beta06にマイグレーションした

# はじめに
2020のアドベントカレンダーではJetpack ComposeのAlpha版を使ってQiitaビューアをサンプルアプリとして作ってみました。
現在はJetpack ComposeもBetaとしてバージョンを重ね、正式版のリリースも近づいて来ていると感じられます。

そこで、前回の記事のアルファ版からベータ版にマイグレーションをし、ここに至るまでAPIにどの様な変更が入り、開発者が注意すべき点がどの様なところにあるかをさらっと共有させていただきます。

# 主な対応内容
– Jetpack Compose を2021/4時点で最新である1.0.0-beta06に対応する。
– APIコールなどをこのバージョンの仕様に合わせる
– 通信やシリアライザを同一モジュール内に移す
– Android StudioについてArctic Fox Canary 15に対応する。
– その他諸々
– また、[このコメント](https://qiita.com/etctaro/items/a17681019c747f5e8b12#comment-2b9004a457801c

元記事を表示

[Android] RxJava + RetrofitでAPIをポーリング(状態変化を検出)したい。

題目の通りです。
RxJava + RetrofitでAPIをポーリングしたい。

> Retrofitで書いたSingleを返すgetStatusAPIがあり、
> これを叩くと状態statusが取れます。
> 状態が変わるまで5秒間隔でポーリングしたいのですがどうすれば良い?

自己解決したので、メモのためここに書きます。
Observable.interval() で指定した間隔で購読します。
Observable.take() は一定時間経過後に購読を停止します。
Observable.takeWhile() は条件が真のあいだ購読を継続します。

キモは Observable.takeWhile() の位置。
doOnNext() より前に書くと、状態が変わったとき、doOnNext()がよばれなくなります。

“`java:hoge.java
private void polling(String checkoutId, int interval, int timeout) {
Disposable disposable = Obse

元記事を表示

JAVA KeyStore 作成手順 (windows)

備忘録として記事にしました。

はじめに

Androidアプリをリリースする際、KeyStoreが必要になりました。
KeyStoreの作成手順を残しておきます。

JDKのインストール

・JDKのダウンロードをします
https://www.oracle.com/java/technologies/javase-downloads.html
![java001.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/223039/4e483ecf-cfca-a4d3-ca72-6b75cfc15142.png)

Windows x64 Installerをクリック
バージョン:jdk-16.0.1
![java002.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/223039/a047839d-6e13-e45c-1288-969e2ed88c68.png)

I reviewed and

元記事を表示

[Android] お寿司屋で例えるAndroid Architecture Compoment 最終貫:ModelとRepository

#この記事は
[[Android] お寿司屋で例えるAndroid Architecture Compoment 第五貫:Roomの続きです。](https://qiita.com/LaO/items/a04c78072da471e9d641)
#おさらい
###MVVMをこんな感じでお寿司屋に例えたとさ
![スクリーンショット 2021-05-01 110640.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/599059/52576d42-f5e0-2e7b-02e7-40343bd9e247.png)

View(Activity/Fragment)はお客さん

ViewModelが板前さん

Repositoryが、漁師

Modelが、海

MVVMを海からお魚を取ってきてお客さんに提供するまでの役割を分割したものと捉えています。
詳しくは、[第一貫](https://qiita.com/LaO/items/121365d5a1ab34815bc6)をご覧ください。(5分位で読める内容ですよ!)

元記事を表示

[Flutter] デバイスID取得の方法

Androidアプリ開発で個体識別IDを取得したい場面が出てきたので、実装したのを共有します。

## パッケージの取得

“`yaml:pubspec.yaml
dependencies:
flutter:
sdk: flutter
device_info: ^0.4.0+2
“`
##出力
device_infoパッケージを`import`する

“`dart:.dart
import ‘package:device_info/device_info.dart’;
“`
“`dart:.dart
DeviceInfoPlugin deviceInfo = DeviceInfoPlugin();
AndroidDeviceInfo androidInfo = await deviceInfo.androidInfo;
print(androidInfo.androidId); // デバイスID
“`

##番外編
ID以外にもいろいろなデバイス情報を取得できるようです。

引用元(https://miajimyu.com/docs/flutter/fl

元記事を表示

Jetpack ComposeでURLから画像を取得する

# 利用するライブラリ
[Remote Image for Jetpack Compose](https://github.com/agarasul/RemoteImage)

URLを指定するだけでネットワークから簡単に画像を持ってくることができるJetpack Composeで利用できるライブラリです。

# 導入
プロジェクトレベルのbuild.gradle

“`gradle:build.gradle
allprojects {
repositories {

maven { url ‘https://dl.bintray.com/agarasul/RemoteImage’ }

}
}
“`

アプリレベルのbuild.gradle

“`gradle:build.gradle
dependencies {

implementation ‘dev.rasul:remoteimage:1.0.4’

}
“`

# 使い方

“`kotlin
Remote

元記事を表示

Jetpack Compose Beta Overviewの動画を見たのでまとめる

## 注意
– 本記事はYouTubeのAndroid Developersチャンネルにおいて投稿された動画である [Jetpack Compose: Beta overview](https://www.youtube.com/watch?v=Ef1xKWjA9E8)について、動画内で述べられていることと、一部筆者の主観が入っている記事となっております。
– 記事内で使用される画像は、[Jetpack Compose: Beta overview](https://www.youtube.com/watch?v=Ef1xKWjA9E8)より引用させていただいております。(不都合等ありましたらコメントをお願いします)
– 動画を全範囲網羅している記事ではありません。

## Jetpack Composeとは?
![](https://i.imgur.com/RlBwN38.png)
### 1. Modern, declarative UI tool kit
– Composeは、宣言的UIを可能にするUIツールキット。
– 宣言的UIとは?
– どのように見えるか(What)を

元記事を表示

[Android]シークレットキーなどの秘匿情報をプロジェクトで使うための設定

Android アプリを開発していく中で、シークレットキーなどの秘匿情報をプロジェクトで扱うことがあるかと思います。

例えば [Qiita API](https://qiita.com/api/v2/docs) を使った Android アプリを開発する場合、アクセストークンを発行するためには [POST /api/v2/access_tokens](https://qiita.com/api/v2/docs#post-apiv2access_tokens) を実行する必要がありますが、この時リクエストパラメータに `client_id` と `client_secret` が必要になります。

これらのパラメータは [Qiita のアプリケーション](https://qiita.com/settings/applications) ページからアプリケーションを登録することによって発行できますが、このような秘匿すべきパラメータを、以下のような条件で Android プロジェクトで扱うための設定について考えます。

– 漏洩防止のため Git のバージョン管理には含めない
– Buil

元記事を表示

How to Update Android Apps

I’ll explain how to update Android Apps. I am using Android Studio.

[Steps]
1. Open “build.gradle” file on the Android Studio.
2. Update Version. We must set the versionCode as an Integer.
(ex.) You must write the versionCode and version name in the file like this.
versionCode 4 to 5
versionName “1.0.4” to “1.0.5”
3. Click “Sync Now” on the upper right.
4. After the sync, Click Build on the menu. And then, choose Generate Signed APK…
5. Choose “Android App Bundle” on another pop-u

元記事を表示

Flutter flutter_pdfview 使い方

#内容
flutter_pdfviewの使い方の忘却録。

#開発環境

PC : macOS Big Sur
エディター : Visual Studio Code

Flutter 1.22.1
flutter_pdfview 1.0.4

#コード

まずは、pubspec.yamlにパッケージを追加
あとは、読み込みたいPDFファイルも追加

“`pubspec.yaml
dependencies:
flutter:
sdk: flutter
flutter_pdfview: ^1.0.4 <- 追加 ・ ・ ・ assets: - sample.pdf <- 追加 ``` ※Info.plistの修正は今回は必要ないので、追記しない ###●ファイルパスを使用する方法 サンプルではassetsフォルダのファイルを読み込んで、ローカルに保存し、パスを指定している。 ```PDFScreen.dart class PDFScreen extends StatefulWidget { fina

元記事を表示

AndroidStudio4.2でSystemアプリをビルドするときのメモ

## 起きたこと
Android Studio4.2にしたらSystemAppのビルドができなくなった

## 解決法

### AS4.2未満
プロジェクトルートのbuild.gradleに

“`build.gradle
allprojects {
// その他のコードがこの上に入る
gradle.projectsEvaluated {
tasks.withType(JavaCompile) {
options.compilerArgs.add(‘-Xbootclasspath/p:app/framework/framework.jar’)
// ここのPathはそれぞれframework.jarをおいている環境に合わせる
}
}
}
“`

### AS4.2以上
プロジェクトルートのbuild.gradleに

“`build.gradle
allprojects {
// その他のコードがこの上に入る
gradle.projectsEvaluated {
t

元記事を表示

Android, iOSで文字の幅を取得する方法

# Android

“`test.kt
val paint = TextPaint().also {
it.textSize = 10
if (!isInEditMode) {
it.typeface = ResourcesCompat.getFont(context, R.font.your_font)
}
}
paint.measureText(“hoge”)
“`

# iOS

“`UIFont+.swift
import UIKit

extension UIFont {
/// テキストのwidthを取得する
func measureText(text: String) -> CGFloat {
let str = NSString(string: text)
return str.size(withAttributes: [.font: self]).width
}
}
“`

“`test.swift
let font = UIFont(name:”your_fo

元記事を表示

Androidエンジニアロードマップに沿って学習してみる

# はじめに
ここ半年くらい仕事でAndroidに触れていますが、体系的に勉強したわけでなく、知識の漏れ抜けが乱発したので一回学習方針を整理しようと思いました

そのときに見つけたのがおなじみの[Developer Roadmaps](https://roadmap.sh/)です

フロントエンド、バックエンド、インフラエンジニアのロードマップは見たことがありましたが、知らない間にAndroidが追加されていたので、こちらを参考に各項目でどう勉強していくのかというのを備忘録代わりにメモしたいと思います

# 概要
![roadmap.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/553852/79bcce84-7268-2a77-34f8-6df85322772f.png)

パット見、他のロードマップよりもこじんまりしているイメージ

[こちら](https://github.com/anacoimbrag/android-developer-roadmap)だともう少し粒度高く書かれているので、適宜

元記事を表示

[Android]「No view found for id ~」エラーに直面した時

#エラーの意味は
~というidのViewが見つからないよぉーの意です。
筆者個人の場合は、FragmentViewのidが、見つからないとのことでした。
しつかりと、transaction.add&commitしたのに…
#解決策
Activity側でFragmentの呼び出しを行っていたのですが、そもそもactivityのレイアウトをsetContentViewしてませんでした^^

以上。

なんか、前にもsetContentViewのし忘れで、一日ググりさまよった事があるなぁ~
onCreate内をいじった時に、setContentView消してしまうのあるあるなんだよなぁ。

元記事を表示

url_launcherをAndroidで動作しない問題(flutter)

#起きていた問題
以下をAndroidで試そうとしても”Could not launch url”となってしまう。

“`dart
import ‘package:url_launcher/url_launcher.dart’;

onTap: () {
launchURL(“https://www.google.com”);
},
…………..
launchURL(String url) async {
if (await canLaunch(url)) {
await launch(url);
} else {
throw ‘Could not launch $url’;
}
}
“`

#解決策
以下をandroid>app>src>AndroidManifest.xmlに追記。

https://github.com/flutter/flutter/issues/63727

OTHERカテゴリの最新記事