- 1. 【Android Wear】WatchFaceの構成アクティビティの作成
- 2. 【Android】プログラム上でadb shellコマンドを実行する方法
- 3. ナビゲーショングラフ内でviewModel()を使用した場合、取得できるViewModelは独自のViewModelStoreOwnerに紐づいている。ActivityやFragmentに紐づいたものは取得できない。
- 4. AndroidでFirebase + Sign in with Apple 実装
- 5. 個人的Droidkaigi2022特に気になるトーク
- 6. AndroidStudioで使用する最大ヒープサイズの変更方法
- 7. Android13以降で必要になった「広告 ID を使用するための権限を宣言する」方法
- 8. 日記アプリリリースしました!
- 9. VSCodeのFlutterでフィンガープリントを取得する方法
- 10. flutter error : Execution failed for task ‘:camera:compileDebugJavaWithJavac’ というエラー等々
- 11. PWA(Progressive Web Apps)とは -Qiitaをスマホで快適に見る-
- 12. AndroidエンジニアのためのiOSライブラリ選定シート
- 13. Material Design Components調べ : FAB編
- 14. Jetpack Compose で Haptics に対応する
- 15. なぜAndroidのdpは4の倍数がいいのか
- 16. ブラウザーだけで使えるインストール不要の完全無料オンラインPDFツール、Windows/Mac/Linux/iOS/Android対応
- 17. 命名時に絶対やめてほしいこと
- 18. 【JetpackCompose】ViewModel は使う必要がない
- 19. 【Flutter】Flutterアプリでセキュリティ面で気にすべきこと
- 20. AndroidのAccessibilityを学ぶ
【Android Wear】WatchFaceの構成アクティビティの作成
# はじめに
WatchFaceの構成アクティビティの作成方法について記述。
下の画像のペンのボタン押下時に起動する画面。
![ConfigActivity.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/694762/f15a6204-980b-f3ab-02c9-7c215adf0d2f.png)WatchFaceの作成手順については、下記を参照。
https://qiita.com/nakashimaakio/items/639f161058107eaeec74
これを実装してから構成アクティビティを作成することをおすすめする。
# 実装手順
## 下準備
### ライブラリの導入
構成アクティビティに必要なライブラリの導入
“`build.gradle
dependencies {
implementation ‘androidx.wear.watchface:watchface:1.1.1’
implementation ‘androidx.wear.watchface:w
【Android】プログラム上でadb shellコマンドを実行する方法
# プログラム上でadb shellコマンドを実行する方法
## パッケージ名を指定して、別プロセスのアプリを終了させる場合
:::note info
exec()の引数を変更することで様々なコマンドを実行できます
::::::note warn
「adb」は省略してexec()に渡します
:::“`main.kt
class AdbService() {fun killProcess(packageName: String) {
//adbから実行する場合は、「adb shell am force-stop com.google.android.apps.maps」となる
val process = Runtime.getRuntime().exec(“am force-stop $packageName”)
process.waitFor()}
init {
//GoogleMapを終了させる場合
val googleMapPackageName =
ナビゲーショングラフ内でviewModel()を使用した場合、取得できるViewModelは独自のViewModelStoreOwnerに紐づいている。ActivityやFragmentに紐づいたものは取得できない。
# まとめ
– ナビゲーショングラフ内で`viewModel()`を使用した場合、取得できる`ViewModel`は`Activity`や`Fragment`のそれとは別の、独自の`ViewModelStoreOwner`に紐づいています。
– そのナビゲーションの乗っている`Activity`や`Fragment`に紐づいたものは取得できません。
– 特に`AndroidView`と組み合わせて使用した場合、`Activity`や`Fragment`のライフライクルに紐づいたものを取得できることを無意識のうちに期待しがちなので注意。
– ナビゲーショングラフはデスティネーション毎(パス毎)に独立した`ViewModelStoreOwner`を持ちます。## つまりこういうこと
以下のような`ViewModel`クラスと`Activity`があった時に、“`SampleViewModel.kt
class SampleViewModel : ViewModel() {// 新しいインスタンスができるたびにユニークなIDを振ります。
private val
AndroidでFirebase + Sign in with Apple 実装
## やること
AndroidでSign in with Appleができるようにする## 前提
Firebaseプロジェクト作成済のアプリであること## 概要
1. IdentifierのSign in with Apple をオンにする
2. ServiceId作成
3. プライベートリレー用の設定
4. Sign in with Apple用秘密鍵作成
5. Firebase側の設定
6. コード書こう## 1. IdentifierのSign in with Apple をオンにする
Apple Developer Consoleにログイン
-> Certificates, Identifiers & Profiles を開く
-> Sign in with Apple を実装したいアプリのIdentifierを選択
-> CapabilitiesタブのSign in with Appleにチェックを入れる
-> Editを押下し、Enable as a primary App IDを選択してSave
-> 右上のSaveを押下## 2. ServiceIDの作
個人的Droidkaigi2022特に気になるトーク
[Droidkaigi2022](https://droidkaigi.jp/2022/)開催日が近くなってきました。
タイムテーブルが公開されたので、気になるトークをピックアップしてみました。
# Jetpack Compose で Material Design 3
1日目の 11:15-11:55
ComposeはAndroidの今のトレンドだと思うので、 Compose で Material Design 3というのはキャッチアップしておきたい内容だと思います!# AndroidManifest.xmlはその後どうなっているのか?
1日目の 14:20-14:45
AndroidManifestは記載することが必要なので、なんとなく書いていることが多いと思います。
その後どうなっているかは、あまり考えていなかったのでこれを機に理解を深めていきたいです!# Camera Xライブラリの魅力と最新機能を紐解く
1日目の16:35-17:00
さまざまなアプリでカメラ機能は使用していると思うので、カメラ機能のライブラリーの最新情報は知っておいて、損はないと思います!
AndroidStudioで使用する最大ヒープサイズの変更方法
# はじめに
久しぶりにヒープサイズを調整したほうがいい旨の通知がAndroidStudio上に表示されていたので対応したのですが、手順を備忘録的に残しておこうと思います。# ヒープサイズ変更方法
まず、ヒープサイズを変更したほうがいい場合に以下のようなメッセージが表示されます。このメッセージが表示された場合は以下の手順で変更が可能です。
①メニューバーから [File] > [Preference]を選択します。
②[Appearance & Behavior] > [System Settings] > [Memory Settings]を選択します。Android13以降で必要になった「広告 ID を使用するための権限を宣言する」方法
# はじめに
ある日、Google Play Consoleで以下のような**広告 IDに関する申告**を求められました>Android 13(API 33)で広告 ID の変更が行われました
Android 13 以降をターゲットとし、広告 ID を使用しているアプリについては、アプリ マニフェストで com.google.android.gms.permission.AD_ID 権限を宣言する必要があります。この権限が含まれていないと広告 ID がゼロにリセットされ、ID にアクセスしようとすると ID ではなくゼロの文字列が返されます。![Screen Shot 2022-10-01 at 19.28.58.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/167220/4cbfb716-29b7-4f19-193d-50fd44fa5d70.png)
で、これが一体何をすればいいのかわからなかったので、対応方法をご紹介します。
# 前提
・対象となるアプリはアプリ内に広告を表示していて
日記アプリリリースしました!
## はじめに
この度、初めてのスマホアプリである「テンプレ日記」という日記アプリをリリースしたので紹介します!
「**テンプレ日記**」で検索すると一番上に出てくるので、興味を持った方は是非インストールして見てください!
## ios版
https://apps.apple.com/jp/app/%E3%83%86%E3%83%B3%E3%83%97%E3%83%AC%E6%97%A5%E8%A8%98/id1638009071
## Android版
https://play.google.com/store/apps/details?id=com.hayatosato.diary
## 「テンプレ日記」の特徴
早速ですが、今回リリースした「**テンプレ日記**」の特徴を紹介します。
「**テンプレ日記**」の特徴は以下の通りです。1. テンプレート機能付き
1. csv&text形式でのダウンロード可能
1. csvファイルによってデータ引き継ぎを行うため、ios ⇄ Android間の移行もできる!
1. 完全無料(バナー広告のみ)
1. 最低限の機能しか
VSCodeのFlutterでフィンガープリントを取得する方法
## 読んでも読まなくてもいい前提
`com.google.android.gms.common.api.ApiException: 10`[調べてみると](https://riscait.medium.com/apiexception-10-error-in-sign-in-with-google-using-firebase-auth-in-flutter-1be6a44a2086)、Debug用のフィンガープリントが必要とのこと。
でもフィンガープリントの取得方法が分からない### 試してみてダメだった方法
– [Android Studioを使ってフィンガープリントを取得する方法](https://riscait.medium.com/apiexception-10-error-in-sign-in-with-google-using-firebase-auth-in-flutter-1be6a44a2086)
– 敗因はバージョン関係の問題と思われる
– [.\gradlew signingReport](https://stackoverflow.com/q
flutter error : Execution failed for task ‘:camera:compileDebugJavaWithJavac’ というエラー等々
## 飛ばしても良い前提
Flutterで2021年秋くらいに「Googleログイン」「カメラ」を使ったアプリを作りました。
研究目的で作っており、実験できればそれでいっか程度で作ったので、1年ほど放置していると、
1. 私が使っていたGoogleログイン機能が脆弱性の問題から使えなくなった
2. 新しいログイン方法に乗り換えようとする
2. 新しいログイン方法を使うためにはcompileSdkVersionを上げないといけない
3. compileSdkVersionを30から31に上げると連続でエラーが出た### エラーが出る状況
– Flutter cameraを使っている
– 環境が古いと、エラーが出る状況が限られており、エラーの報告自体がネットに中々無かったので、今回はこの連続エラーとその解決策として実行したことをまとめた記事です。
## 1個目のエラー(Flutter Cameraバージョンが古かった)
### エラー文
`flutter error : Execution failed for task ‘:camera:compileDebugJavaWith
PWA(Progressive Web Apps)とは -Qiitaをスマホで快適に見る-
## QiitaをiPhoneで快適に見たい
1. でも公式アプリってないよね?
1. とりあえずホーム画面に追加するか…
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2882988/7832dae2-6e7d-f6df-bda1-1b16d05adb48.png)
1. で、生成されたこれを押す。
![S__70516744.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2882988/5e1e897f-ecd6-4c39-1c3a-7f789015bf0b.jpeg)
1. するとSafariで開かれず、アドレスバーも何もないネイティブアプリのような画面で表示される。
![S__70516740.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2882988/e34c7afe-9f89-c31f-965b-2214c7
AndroidエンジニアのためのiOSライブラリ選定シート
Qiita初投稿です!:joy:
## 目的
本ページはAndroidアプリ開発経験者がiOSアプリを開発し始める上で必ず確認したくなる~~はずの~~**Androidでいうとこのライブラリなんだけど、それのiOS版は何か**をまとめたものです。主に自分で調べた備忘録として残します。
誰かの労力の削減になれば幸いです:open_hands:## 比較表(2022/9/30 時点)
| 役割 | Android(kotlin) | iOS(Swift) |
|:-:|:-:|:-:|
| ログ | [Timber](https://github.com/JakeWharton/timber) | [SwiftyBeaver](https://github.com/SwiftyBeaver/SwiftyBeaver) |
| HTTP クライアント | [Retrofit2](https://square.github.io/retrofit/) | [Moya](https://github.com/Moya/Moya)※1 |
| 画像読み込み | [coil](https://
Material Design Components調べ : FAB編
# 背景
Material Design Componentsいっぱいあるけどガイドライン的にはどんな時に使うのがいいの? 逆にどんな時には使っちゃダメなの? がわからなくなるのでまとめてみました。
まずはよく使うFABから進めて、今後他のComponentについても記事にしていこうと思っています。# floating action buttonとは
floating action buttonで通称FAB。
主に画面の右下に設置され、画面の主要なアクションを表しています。
有名なアプリではTwitterのツイート作成ボタンがこれだったりします。# どんなときに使うの? どんなときに使っちゃダメなの?
|良い例|悪い例|解説|
|—|—|—|
|Jetpack Compose で Haptics に対応する# Haptics とは
利用者に力、振動、動きなどを与えることで皮膚感覚フィードバックを得るテクノロジーのことで、ことAndroidにおいては触覚による刺激生成に貢献するハードウェアとソフトウェアの機能を指します。
https://source.android.com/docs/core/interaction/haptics
# Androidでの Haptics Framework
UX原則として以下の3パターンが推進されています。![hapticsSAC12_1.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/223159/89f089bc-fdd4-a27c-6707-455c3cf7d187.png)
#### 1. Buzzy
ポケベルやガラケー時代に利用されていた低品質ながらも電力効率の高いERMブザーベースのバイブレーション
#### 2. Clear
非連続の状態変化(Power On/Offやプロセス中のバイナリ変化) をサポート
クリアなHapticsは1つのIn
なぜAndroidのdpは4の倍数がいいのか
# 背景
Androidは様々なスクリーンサイズ、画素数の端末が販売されています。その一つ一つに合わせてレイアウトのデザインを作り込むのは大変です。
例えば100ピクセルの画像を画面に表示するようなデザインの場合、以下のような問題が出てきます。– 端末のピクセルの画面サイズに合わせて画像を拡大縮小させる必要がある
– 端末によるピクセル密度が異なることもあるため、同じピクセルサイズの画面でも物理的なサイズが違うため、見え方も違うそのため、Androidではdp, spという画面サイズや解像度に捉われることなく扱うことを目的とした抽象的な単位を提供しています。
# ピクセル密度とそれに対応した区分
Androidではdpiという「1インチあたりどれだけのピクセルが入っているか」の大きさによって端末の種類を区分けしています。
|汎用密度|倍率|説明|
|—|—|—|
|ldpi|x0.75|低密度(ldpi)画面(~120dpi)に適用するリソース|
|mdpi|x1|中密度(mdpi)の画面(~160dpi)に適用するリソース(基準密度)|
|hdpi|x1.5|
ブラウザーだけで使えるインストール不要の完全無料オンラインPDFツール、Windows/Mac/Linux/iOS/Android対応
最近、リモートワークやペーパーレス化の拡大につれて、デジタル文書の形式であるPDFがますます重要な役割を果たしています。デスクワークが仕事の方々は誰でもPDFに関する知識やツールの使い方を学ばなければなりませんが、ほとんどのPDFソフトは高価で、無料のものは制限が多く、なかなか大変です。昔使っていたsmallpdfさんはなぜかいろいろ制限が増えて、使いづらくなりましたから、代替のものをずいぶん検索しました。それでは、見つかったOSを問わず、インストール不要、広告なしのクラウドベースのフリーオンラインPDFツールサイトである「LightPDF」を紹介します。
# LightPDFオンラインPDFツール
使用するには、お使いのデバイスのブラウザーでLightPDFのPDFツールサイト(https://lightpdf.com/jp/tools) にアクセスすれば、下記の画像のようなPDFツールの画面が表示されます。中から使いたいものを選べばいいです。
![lightpdf-online-tools-interface.jpg](https://qiita-image-store.s3.
命名時に絶対やめてほしいこと
# 初めに
今回は変数名や、`layout`の`id`などを命名する時に絶対にやめたほうがいいことを紹介していきます。
### 本文
まず初めが***別画面で同名のidを使わない***といことです。
最近は`Jetpack Compose`が出て来たのもあって今後減っていきそうではありますが、命名するのが難しいViewがある場合に汎用的すぎる名前をつけているのが時々見受けられます。
汎用的なIDをつける場合はせめてどの画面のものなのかがわかるようにしたりしましょう。—
次が***関数名をつける時は動詞を前に持ってくる***です。
初心者や新入社員の方に多くみられるのが動詞が後ろの方に来てしまってることがありますが、それだと該当の関数が何をするのかがぱっと見でわかりません。
例として`setupPageView`とかけば見る側は少なからず何かしらのセットアップをすることがわかりますが、`pageViewSetup`だとPageViewに対して何かをすることしかわかりません。
もちろん対象は大事ですが、ある程度の知見がある人の場合何をしたいのかが重要で中身のコードを見れば対象がなん
【JetpackCompose】ViewModel は使う必要がない
AAC ViewModel is a kludge for Android, I see no reason to proliferate bad patterns. If you have a properly designed data layer, you'll realize you have no use for an AAC ViewModel.https://t.co/HWvs4nSpoL
— Jim Sproch (@JimSproch) August 20, 2022
【Flutter】Flutterアプリでセキュリティ面で気にすべきこと
インドネシアの[PT.AQ Business Consulting Indonesia](https://aqi.co.id/)でFlutterのエンジニア兼アドバイザーをしております菊池と申します。
本記事はZennで出版しております[flutter chips](https://zenn.dev/tetsukick/books/06ee607e30e243)のchapter2-1の内容の一部になります。(本記事が2,000字程度、Zenn記事が50,000字程度)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/261934/5183aafc-d1d7-534f-f618-031f10790fdc.png)## センシティブな情報とは
センシティブな情報とは、具体的に、、
- Amazon Web Services(AWS)APIキー
- Facebookトークン
- GitHubトークン
- Google APIキー
- Twitter OAuthトークン
- PayPal
AndroidのAccessibilityを学ぶ
# AndroidのAccessibilityについて
この記事ではGoogleが提供しているPathwayを行いながら内容を自分のためのノートのような形式でまとめていきます。CodeLabを参考にしながらAccessibilityを考慮したアプリについても勉強していきます。https://developer.android.com/courses/pathways/make-your-android-app-accessible#codelab-
### Accessibilityとは?
> アクセシビリティ(英: accessibility)とは、障害者が他の人と同じように物理的環境、輸送機関、情報通信及びその他の施設・サービスを利用できることをいう。ウェブページにおけるアクセシビリティは、高齢者や障害者、また異なる情報端末やソフトウェアにおいても、情報を取得あるいは発信できる柔軟性に富んでいること(あるいはその度合い)を意味する。公共サービスでは、障害があっても知る権利を保障する情報保障によって重要となる。
引用:Wikipedia https://ja.wikipedia