- 1. 【Android】アプリの権限を許可してもらうために「設定」を開きたい
- 2. LineageOS 16.0(Android 9)
- 3. 本日の曜日を取得する方法
- 4. [Android] Include タグを利用したときに Databinding する方法
- 5. スマホアプリのUIデザインについて知っておきたいこと
- 6. React NativeのビルドにAndroid Studioに同梱されているJavaを使う
- 7. エンジニア向けSNSアプリを孤独にフルスクラッチした時の技術要素とか苦労話とか
- 8. HTV31のバッテリー交換してみた
- 9. Kotlin, LiveData, coroutine なんかを使って初めてのAndroidアプリを作る(7)
- 10. Unity2019.XでAndroid IL2CPPビルドする
- 11. Android リリースメモ
- 12. Android基礎第3回-画像を使う
- 13. Android NDK で Hello World 表示してみる
- 14. Android + cmake で ASAN(Address Sanitizer)を使う
- 15. DroidKaigi 2020 の Repository に Contribute した話
- 16. Androidで文字幅を調整する
- 17. ぼくの考えた最強のSharedPreferences
- 18. C/C++ アプリ(NativeActivity)の Android APK を cmake で作るメモ(SDK 28+, Android 9 以降. 2020 年 2 月 2 日時点)
- 19. Android Vulkan 開発のメモ
- 20. “Rust Android Gradle Plugin” を使ってみる
【Android】アプリの権限を許可してもらうために「設定」を開きたい
Androidアプリを作っていると、アプリからデバイスの「設定」に飛ばしたくなることがあります。例えば、アプリ内でカメラを使いたいときに、カメラへのアクセスが許可されていない場合は使えないので、「設定」で許可してもらいたいです。
そこで、アプリの「設定へ」のようなボタンを押すと設定画面を開くようにする方法を、忘れないように記しておきます。以下の手順では、該当アプリの詳細設定画面に飛ぶようになっています。
アプリの詳細設定画面
![application_details_settings.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/124752/eec418da-c855-7fa9-5224-6b58ad71ea64.png)# 手順
アプリの詳細設定画面を開くコードを以下に示します。“`kotlin
val settingsIntent = Intent(
android.provider.Settings.ACTION_APPLICATION_DETAILS_SETTINGS
LineageOS 16.0(Android 9)
## 【LineageOS 16.0 (Android 9)】
RPi3B+ のスペックは [Nexus 7 (2012)](https://ja.wikipedia.org/wiki/Nexus_7_(2012) “Nexus 7 (2012) – Wikipedia”) 相当(という認識)だったけど、RPi4B はどうなんだろう。
最近のタブレットには疎いからよく分からないけど、やはり数世代前の物と同程度だと思われ。
で、LineageOS。試しに入れてみたけど、流石に動作はもっさり。RPi4B とはいえ比較的新しめの Android を動かすには厳しいよな。
しかし、こうしたビルドを公開している人は凄いよ。
RPi ならイメージ焼きでガチャポンで起動できるし。興味のある方は以下参照。[LineageOS 16.0 (Android 9) for Raspberry Pi 4](https://konstaka
本日の曜日を取得する方法
#曜日を取得する方法
###曜日
String[] weekName = {“日曜日”, “月曜日”, “火曜日”, “水曜日”,
“木曜日”, “金曜日”, “土曜日”};@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);Calendar calendar = Calendar.getInstance();
int week = calendar.get(Calendar.DAY_OF_WEEK) – 1;
Log.v(“checkCalendor”,” + ” + weekName[week]);}
###その他の情報の取得方法
int year = calendar.get(Calendar.Y
[Android] Include タグを利用したときに Databinding する方法
# はじめに
Android では Layout の再利用性を高められるよう Include タグを利用すれば、
作成済みの Layout ファイルを他の Layout ファイルに埋め込むことができます。**作成済みの Layout ファイル**
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/79387/ffbbb4d8-bb00-8c88-f6b5-8c28aedcf092.png)“`xml:one_fragment.xml
スマホアプリのUIデザインについて知っておきたいこと
# はじめに
スマホアプリのエンジニアとして、UIデザインについて知っておきたいことをまとめておきます。
自分用のリンク集のような意味合いが強いですがお役に立てば幸いです。# 公式資料
一度は目を通しておきたい基本的で重要なドキュメントです。### Apple
– [Human Interface Guidelines](https://developer.apple.com/design/human-interface-guidelines/)
– 現在は英語版しかないようです
– [Apple Design Resources](https://developer.apple.com/design/resources/)
– デザインツール用のテンプレートファイルなどがあります
– [Material Design](https://material.io/design/)
– こちらも現在は英語版しかなさそう
– [Android のマテリアル デザイン](https://developer.android.com/guide/topics/
React NativeのビルドにAndroid Studioに同梱されているJavaを使う
React NativeでAndroid向けにビルドする場合、環境にJavaがインストールされている必要がある。
メジャーなのはOracleの配布しているJava。しかしAndroid StudioにはそれでなくOpen JDKが同梱されている。
Android Studioのと合わせた方がトラブルが生じにくいだろうし、またOracle Javaのライセンス変更[^1]を気にする必要もなくなるため、Android Studioに同梱されているJavaをReact Nativeのビルドに使う。
[^1]: [「Oracle Java」のライセンスが変更 ~無償利用は個人での開発・テスト・デモ目的のみに](https://forest.watch.impress.co.jp/docs/news/1180607.html)
## 環境
– macOS Mohave 10.14.6
– react-native: 0.61.5## 手順
`.bash_profile`に下記のように記述する。
“`sh
export PATH=$PATH:/Applications/”Andr
エンジニア向けSNSアプリを孤独にフルスクラッチした時の技術要素とか苦労話とか
# 作ったもの
エンジニア同士、デザイナ同士、エンジニアーデザイナが一緒に「なんか作ろうぜ」「なんか勉強しようぜ」というつながりを実現できるSNSアプリEDICPAT
https://play.google.com/store/apps/details?id=com.engineer_forum.engineer_forum# 作った動機
エンジニア向けSNSアプリってもう色々あるんでしょうけど、既存の団体に自分が参加する形式とか、作ったものを見てもらうとかの形式だったりすると思います。そうじゃなくて、未経験者とか、フリーランスエンジニアとか、**そこら辺の仲間と「勉強会やろうぜ」とか「何か作ろうぜ!」ってやりたい。**休日とか、ライトなノリで。自分自身がそういうのに
HTV31のバッテリー交換してみた
# 起
6系の開発端末がなかったので、昔使っていたHTV31を使えるようにしよう。
プログラミングの話題ではありませんが、ご容赦いただければ・・・# 使えなくなってた経緯
– バッテリー残70%で電源が落ちる
– コネクタの接触が悪いのか充電できない(ことが多い)バッテリー交換してやれば一応使えそう
# 準備
– バッテリーはヤフオクで入手
– 2300円でした
– ~~そもそもHTV31自体同じくらい価格で買えるけどそれは言わない方向で~~
– 交換用のツールも色々ついてきたけど結局手持ちのもので足りました– 手順は[まめわんわん様のブログ](https://ameblo.jp/mamewanwan-04/entry-12459253833.html)を参考にさせていただきました
# 使ったもの
Kotlin, LiveData, coroutine なんかを使って初めてのAndroidアプリを作る(7)
すっかり遅くなってしましました(汗)
テストにドはまりしたり、Flutterに浮気したりしてしたわけではありませんよ?(笑)ということで、[前回](https://qiita.com/kasa_le/items/a20763135ce61b15c270)の続きです。
# 今回の目標
– ライブラリの最新版対応
– Koinを使ってDI(依存性注入)を行うアプリの機能としては進歩しませんが、ちょっとだけ「リファクタリング」ぽいことをやります。
メインはDIの方ですが、ちょうどよいので使っているライブラリのバージョンも最新にしてみようと思います。# ライブラリの最新版対応
アプリの作成中には、1ヶ月ほどで完成できるようなアプリならともかく、ある程度の期間掛けて開発する場合には、その途中でライブラリや開発ツールのバージョンがいつの間にかドンドン上がってしまい、リリースする頃にはいつの間にか「まだそのバージョン使ってるの?」なんてことも。
単にバージョンの数字を上げてやるだけで良い場合は特に問題ないのですが、微妙にinterfaceが変わったり、使っていたAPIが非推奨に
Unity2019.XでAndroid IL2CPPビルドする
# 概要
最近業務でAndroid IL2CPPビルドすることになったんですけど滅茶苦茶手こずったので同じ被害者を出さないためにメモ
# 解決法
UnityHubでAndroid Build Supportをインストールする時に子要素のAndroid SDK & NDK ToolsとOpenJDKにもチェック入れてインストールするだけ。あとはUnityが勝手にパス参照とかしてくれるので一切設定する必要なし。![Screenshot 2020-01-31_23-30-54-140.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/483991/6140194a-da25-922c-8203-b30b0c33b3c4.png)
# 愚痴
Unity2017.XとかだとAndroid SDKとか全部自前でDLして設定する必要あったじゃないですか。公式にも[こんなの](https://docs.unity3d.com/jp/460/Manual/android-sdksetup.html)があるし。
Android リリースメモ
# ビルドバリアント
debug releaseの切り替えとか
Android Studioの左下あたりの`Build Variants`からdebugとリリースを切り替えできる。
設定はこの辺を参考に
https://developer.android.com/studio/build/build-variants?hl=ja#signing
https://developer.android.com/studio/publish/app-signing.html?hl=ja#sign-auto### 設定画面までの行き方
[Project] ウィンドウでアプリを右クリックし、[Open Module Settings] をクリック# アプリの署名周り
ここの最初の1~5を順番にやる
https://developer.android.com/studio/publish/app-signing?hl=ja# リリース時のビルド
ここを参考にビルドしたら `app/release` にaapファイルができる。
https://developer.android.com/s
Android基礎第3回-画像を使う
#目指す成果物
前の記事でスタートしたDiceRollerアプリを使ってビルドしていき,サイコロが転がる時に変化するサイコロ画像を追加します.前回の記事のアプリをスタートしていないときは,ソースコードをダウンロードできます.
ソースコード:
https://github.com/syuheifujita/android-codeLab-fundamental-1-2#ステップ
###1. 画像リソースを追加するまず前回のプロジェクトを開きます.
(前回のプロジェクトを持っていない方はソースコードをダウンロードすることができます.https://github.com/syuheifujita/android-codeLab-fundamental-1-2)次に`res`フォルダーを展開し,`drawable`を展開します.
![1-3-1.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/249786/9a371724-d15c-4cb5-7118-6fa4bfdfb71f.png)ここ
Android NDK で Hello World 表示してみる
## プロジェクト作成
普通にプロジェクトを作成する## NDKのインストール
Tools -> SDK Manager -> SDK Tools から NDK を選択し、インストールする
## ndk-build へのパスを通す
“`~/.bash_profile
export PATH=$PATH:/Users/{ユーザー名}/Library/Android/sdk/ndk/21.0.6113669
“`2020年2月現在、上記のようなパスにインストールされるもよう
ターミナルで `source ~/.bash_profile` を実行後、 `ndk-build` コマンドを実行しパスが通っていることを確認する## jni
Android + cmake で ASAN(Address Sanitizer)を使う
https://developer.android.com/ndk/guides/asan
API level 27 から Android でも ASAN(Address Sanitizer)が使えるようになりました.
(APL level 24 くらいから使えたような気もしますが, セットアップのしかたが変わったようです)## ビルド
ドキュメント通りにすればいけます.
特段, gradle や CMake での ASAN 専用設定オプションはありません.
CFLAGS/LDFLAGS に直接 `-fsanitize=address` あたりを指定します.## APK の作成
`libclang_rt.asan-*-android.so` ファイルは NDK のパッケージにあります. `jniLibs/
` に入れます. wrap.sh ファイルは, `resources/lib/
` フォルダに入れます(`res` でもいいかもしれません)
(`jniLibs/` に置いても, .so ファイルしか APK にコピーされないため)
DroidKaigi 2020 の Repository に Contribute した話
表題そのままですが、初めてオープンソース開発に Contribute しました。
そのままの勢いで書いてしまいました。## DroidKaigi ??
> DroidKaigiはエンジニアが主役のAndroidカンファレンスです。
> Android技術情報の共有とコミュニケーションを目的に、2020年2月20日(木)、21日(金)の2日間開催します。[DroidKaigi 2020](https://droidkaigi.jp/2020/)
そしてこのカンファレンス用のモバイルアプリは有志によって作成されています。
[GitHub – DroidKaigi/conference-app-2020: The Official Conference App for DroidKaigi 2020 Tokyo](https://github.com/DroidKaigi/conference-app-2020)
前々から Android アプリ開発のバイブルとして (勝手に) 参考にさせていただいていました。
このプロジェクトに参加できたら Android アプリエン
Androidで文字幅を調整する
# はじめに
行間の記事は多数あれど、文字幅で調べると全然なくて苦戦したので記事にしておきます。# やり方
とても簡単。`letterSpacing`属性をつけるだけ。APIレベルは21以上です。“`xml:activity_main.xml
…
ぼくの考えた最強のSharedPreferences
# 汎用性高いSharedPreferences
すべての型に対応したSharedPreferencesです。
使いやすくなってます。以下、コードです。
“` kotlin
import android.content.Context
import android.content.SharedPreferences
import kotlin.properties.ReadWriteProperty
import kotlin.reflect.KProperty/**
* sharedPreferencesの拡張クラス
*
* 初期値があるプロパティ、Nullableなプロパティに対して、
* 自動で保存する機能を継承
*
* 汎用性高くするために、すべての型に対応
*/
class SharedPref(context: Context) {// static領域
companion object {
// 遅延宣言
private lateinit var statefulContext : Conte
C/C++ アプリ(NativeActivity)の Android APK を cmake で作るメモ(SDK 28+, Android 9 以降. 2020 年 2 月 2 日時点)
## 背景
* Android Studio でビルドしたくない
* SDK のダウンロードとかでは使った方が楽かと思います
* gradle を使いたくない
* C/C++ でグラフィックスや機械学習コードを cli で動かしたいがメインなので, Java レイヤーとか作る必要がない
* cmake のビルドで ./a.out を作る感じで apk まで作りたい(e.g. CI 向け)## 参考情報
C++ メインな Android アプリの APK を gradle を使わずビルドする
https://qiita.com/syoyo/items/1a8a603e5b9bacf5f2b5NativeActivity サンプル
https://developer.android.com/ndk/samples/sample_naCMake script for creating/running Android APK
https://github.com/hunter-packages/android-apkBuild Android NDK project
Android Vulkan 開発のメモ
## Depth/Stencil buffer
https://vulkan-tutorial.com/Depth_buffering
DEPTH_STENCIL を指定して作成しても, subresourceRange.aspectMask には `VK_IMAGE_ASPECT_DEPTH_BIT` のみを指定しないとだめっぽい.(Validation Layers でエラーが出る)
ただ, きちんとやる場合はバリア命令を発行して(?), 実際のイメージレイアウトを取得して判定する必要がある.
(Vulkan Tutorials での `transitionImageLayout`
“Rust Android Gradle Plugin” を使ってみる
Twitter で Rust の Gradle プラグインがあるという話を聞いたので試してみました。
* [Rust Android Gradle Plugin](https://github.com/mozilla/rust-android-gradle)
Rust で Android 向けバイナリをビルドするという話はすでにいくつか記事があげられています (ありがとうございます) 。
* [RustでAndroidアプリを作る](https://qiita.com/nacika_ins/items/7aaad419fac128ac5b6d)
* [RustをクロスコンパイルしてAndroidで動かす – totechite’s blog](https://totechite.hatenablog.com/entry/2019/01/07/000000)Gradle でやってみたものはなかったっぽいので備忘録的にまとめておこうと思います。
環境:
* Windows 10
* Android Studio 3.5.3
* Android SDK Tools 26