- 1. [Android]name = “hogehoge” is translated here but not found in default localeが起きた時
- 2. root起動したNoxPlayer上のアプリにlldbを使ってattachする
- 3. 【Kotlin】MVVM + RxJava + RetrofitでQiitaの記事を取得するアプリを作成してみた
- 4. Androidアプリのパフォーマンス ②改善(Map、Set)
- 5. [Android]初めての公式ドキュメント
- 6. AndroidによるmTLS接続方法について自分用メモ
- 7. Pepper SDK入門(28) BaseChatbotで何でも言うことを聞いてくれるPepper
- 8. NDK at ~/Android/Sdk/ndk-bundle did not have asource.properties file と出た時
- 9. 初心者による初心者のための kotlinクリックイベント
- 10. 【Android / Kotlin】USB Debuggingモードでアプリ起動を拒否する
- 11. パーミッション管理の「もう一つ」のライブラリ Dexter
- 12. 【AdMob】OpenBidding導入後の効果
- 13. [Android]Handlerの非推奨の解決策&ちょっと理論的な事も
- 14. NoCodeで習慣化しなくていい日記アプリをつくりました
- 15. Google Maps ActivityをFragmentへコピペするときの注意
- 16. RecyclerViewで広告用のレイアウトを設定する
- 17. 【Kotlin 初心者】CustomDialogの作り方
- 18. ストップウォッチ
- 19. 既存のレイアウトの一部にJetpack Composeを組み込む
- 20. 【Android / Kotlin】ズーム対応のPDF表示サンプルアプリ(PdfRenderer + PhotoView)
[Android]name = “hogehoge” is translated here but not found in default localeが起きた時
#解決策
黙って再度展開(File -> Close Project)
root起動したNoxPlayer上のアプリにlldbを使ってattachする
# tl;dr
– ホストPCのポートにNoxPlayer上のAndroidのadb_serverがforwardされており、adb connectで接続できる。
– lldb/gdbするにはadbでport forwardする。
– Root化起動を有効にすれば手軽に任意のプロセスにattachできる# モチベ
NoxPlayerはroot化起動が簡単に出来るのでReverseEngineeringの道具にできるのではないか。
rootでlldb-serverを起動したら任意のアプリ/プロセスをデバッグできるのでは→できた# 手順
## Noxのセットアップ
1. 普通にイメージを作る
今回はAndroid5(Lollipop)を選択
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/132033/7eb7eb72-78b9-d127-b297-791d87ba0554.png)
1. システム設定→基本設定→Root化起動をONにしておく
1. 起動しておく##
【Kotlin】MVVM + RxJava + RetrofitでQiitaの記事を取得するアプリを作成してみた
自分自身の設計の勉強を兼ねてMVVMでQiitaの記事を取得するだけの簡単なアプリを作成しました。(https://qiita.com/api/v2/docs#%E6%8A%95%E7%A8%BF)
## MVVMとは
– Model
– View
– ViewModelの3つから構成されます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/484337/37d59285-4011-c3f1-1552-77723fa80f72.png)View層 → ViewModel層 → Model層といったような依存関係があります。
Model層はViewModelやViewに関心がなく(Viewの種類に関わらず同じ処理を行う→Viewに依存しない)、ViewModel層はViewに関心がありません。参考:[【Android】2020年からの MVVM【実践】](https://qiita.com/sdkei/items/a48ae24536562ed000b3)
## 実装完成
Androidアプリのパフォーマンス ②改善(Map、Set)
この記事では、Androidアプリのパフォーマンス改善のための、方法について記載します。
### 改善対象
MapやSetを特定の条件で絞りたい場合、filter関数を使うことがあると思います。
https://kotlinlang.org/api/latest/jvm/stdlib/kotlin.collections/filter.htmlfilterはとても便利な関数ですが、パフォーマンスとしては注意が必要です。
### 計測
1から100までのキーを持つMapから、キーが91以上のマップをfilterする場合、JUnitで処理時間を計測したところ、10000回の平均値で、**26,731ns**でした。“`kotlin
companion object {
private const val MAP_SIZE = 100L
private const val NUMBER_OF_MEASUREMENT = 10000
}@Test
fun mapTest() {
val map =
[Android]初めての公式ドキュメント
#対象者
ドキュメントを読みたい人
ドキュメントを読もうとしても英語の羅列でなんの情報かが分からないという人
#構成について
みんな大好きAlertDialogのドキュメントを元に解説していきます。https://developer.android.com/reference/android/app/AlertDialog
#AlertDialog
###public class AlertDialog extends Dialog implements DialogInterface
これは、クラスの定義です。
Dialogクラスを継承し、DialogInterfaceを実装していることがわかりますね。###java.lang.Object
↳ android.app.Dialog
↳ android.app.AlertDialogこれは、継承の家系図的なものがパッケージまで書かれています。
###Known direct subclasses
これは、AlertDialogのサブクラスについて紹介されています。
###A subclass of Dia
AndroidによるmTLS接続方法について自分用メモ
## mTLSとは
ざっくり言うと双方向で行うTLS認証である。詳しくは[こちら](https://milestone-of-se.nesuke.com/nw-basic/tls/mutual-tls-token-binding/)
## 必要なもの
– android側
– クライアントの秘密鍵
– クライアント証明書
– サーバ証明書のルート証明書– サーバ側
– サーバの秘密鍵
– サーバ証明書
– クライアント証明書のルート証明書## 接続方法
1. クライアントの秘密鍵・証明書の生成
生成方法はこちらの記事を参照
– https://tech.at-iroha.jp/?p=734
– https://android.benigumo.com/20201130/keytool/
– https://qiita.com/KNaito/items/66dc67e15b71f2bb1f981. サーバ側の秘密鍵・証明書の生成
AWSやGCPで行うのであれば、
– https://aws.amazon.com/jp/about-a
Pepper SDK入門(28) BaseChatbotで何でも言うことを聞いてくれるPepper
#はじめに
BaseChatbotとは、Chatbotの実装において必ず継承される抽象クラスです。
[Chatbotの回](https://qiita.com/kskrin/items/3f02aa8f55e3e52aac84#qichatbotbasechatbot)でも一瞬だけ触れましたね!
Chatbotでは会話に終始していましたが、Chatbotの親クラスであるBaseChatbotを利用することで発話に限らないリアクション、Pepperの全身を生かしたリアクションも可能になります?以下の動画に登場するPepperは、今回オリジナルで作成するサンプルアプリを使用しています??
初心者による初心者のための kotlinクリックイベント
kotlinで生まれて初めてのアプリ制作。基本の基本であるクリックイベントになんとなく混乱している今日この頃です。しかし、そんな日々も今日で終わりにしたい!!!ということで、Qiita初投稿の今回は、kotlinクリックイベントの基本的な実装方法についてまとめました。
今回は以下4つの方法を扱います。
– レイアウトに設置する方法
– アクティビティ自体に実装する方法
– ボタンに直接実装する方法
– 変数として実装する方法実装するにあたって、私が躓いた点も合わせて紹介するので、参考になればと思います。
(独断と偏見によるおすすめ実装方法フローチャート)
![スクリーンショット 2021-05-26 10.22.59.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1396691/bcb3389a-c527-eb5c-26c8-5a5ee3246a74.png)#0.準備
myapplicationという名前のアプリを作るべく、ActivityMain.ktとmain_activity
【Android / Kotlin】USB Debuggingモードでアプリ起動を拒否する
セキュリティのため、USB Debuggingモードの場合に起動を拒否する必要があり実装しました。
最初に起動するActivity内に記載します。![Screen Shot 2021-05-28 at 9.44.38.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/429030/1902a36e-c9f9-3bba-477b-3bbd2f39d3f1.png)
“`kotlin
@AndroidEntryPoint
class SomeActivity : AppCompatActivity() {override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)if (isDebuggingMode()) {
restrictOperation()
}
}
private
パーミッション管理の「もう一つ」のライブラリ Dexter
Androidのランタイムパーミッション周りの処理で使うライブラリといえばPermissionsDispatcherですが、Dexterも使いやすくて便利なので簡単な利用例を交えて紹介します。
###説明
https://github.com/Karumi/Dexter以下公式説明から引用
> Dexterは、実行時に権限を要求するプロセスを簡素化するAndroidライブラリです。
> アクセス許可コードをアクティビティから解放し、そのロジックを好きな場所に記述できるようにします。###例
Dexterオブジェクトを作成し、取得したい権限とランタイムパーミッションでのユーザー操作後の処理を定義します。
下記は画面上のボタンを押した時に位置情報権限(ACCESS_FINE_LOCATION, ACCESS_COURSE_LOCATION)を取得する処理を行うことを想定した例です“`kotlin:
Dexter.withContext(context)
.withPermissions(
Manifest.permission.ACCESS_FINE
【AdMob】OpenBidding導入後の効果
#はじめに
2021年4月からAdMobのOpenBidding機能が一般開発者にも開放されました。
私のアプリにも導入して一定期間経ったのでその効果などを記します。先に書いておくと、多少は効果がありましたが大きく収入が伸びたわけではありません。
まだ導入して2ヶ月程度なのでこの先伸びる可能性はありますが…#OpenBiddingとは
一般的に広告枠には特定の広告配信会社の広告を表示します。
ところがOpenBiddingは複数の広告配信会社に一斉にリクエストを飛ばし、一番高い単価を提示した会社の広告を表示するというものです。
しかもリクエストを飛ばすのはAdMob(Google)側のサーバが担うため、スマホ側への負荷は無くいい事だらけの技術です。
リアルタイムオークションと言ったほうが伝わりやすいかもしれません。
日本語では「公開入札」と呼んだりします。なお、各広告配信会社とは個別に契約する必要があります。(契約といってもユーザ登録+αレベル)
また、一部の広告配信会社はアプリにSDKを組み込む必要があります。
SDKが出てくると難しく感じるかもしれませんが、想像して
[Android]Handlerの非推奨の解決策&ちょっと理論的な事も
#非推奨になっちゃうやーつ
“`kotlin:
const val DELAY_TIME = 1000fun delayDelay() {
Handler().postDelayed({
// 遅延させたい処理
}, DELAY_TIME)
}
“`
正しくは“`kotlin
Handler((Looper.getMainLooper())
“`
Handlerの引数を指定してあげてください。
#なんで?
ついでに、Handlerについて理論的な事を少しだけ喋ります。登場人物が多いですが、こう例えてください。
Handler =「トラック」
Message Runnable =「荷物」
Looper =「工場」
Queue =「先入れ先出し」
Message Queue =「ベルトコンベアー」Androidのメインスレッド(UIスレッドと同じ)には、工場(Looper)が元々あります。
そして、工場内にはMessage Queueという「ベルトコンベアー」があります。
ベルトコンベアーは、Queue
NoCodeで習慣化しなくていい日記アプリをつくりました
![noteサムネ_flour告知.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/127251/a47cd97b-a7e4-da9f-aeff-90a48a39123a.png)
こんにちは。フローリシング代表の中沢草太です。
普段メンタルヘルスのアプリを作っていて新しいアプリを公開したので紹介します。
このアプリはNoCodeのKodularを用いて開発しています。#何を作ったのか?
習慣化しなくていい日記アプリ「[flour](https://play.google.com/store/apps/details?id=jp.flourishing.flour&hl=jp)」を作りました。
(日本語と英語に対応しています)https://play.google.com/store/apps/details?id=jp.flourishing.flour&hl=jp
なんで習慣化しなくていいのかというと**Twitterをしながら日記を書くことができるから**です。
Twitterし
Google Maps ActivityをFragmentへコピペするときの注意
少しハマったのでメモ
# やろうとしたこと
– Google Maps Activity のコードをそのまま新規FragmentにコピペしてMap表示するFragmentとして使う![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1344513/e91a2588-bfb6-8ef5-631d-49ba68a3ed46.png)
# ハマったこと
– “Unresolved reference: supportFragmentManager” というエラーが出る# 対策
– supportFragmentManager から childFragmentManager に変更対策前
“`kotlin:Fragment.kt
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
super.onViewCreated(view, savedInstanceState)
RecyclerViewで広告用のレイアウトを設定する
#目的
RecyclerView内に広告(バナー広告を想定)を掲載する際、広告用のレイアウトを設定する方法がLayoutManagerによって異なったため、それぞれのLayoutManagerでの設定方法のメモ#前提
RecyclerView.AdapterのgetItemCountは広告の枠も含めた件数を返し、getItemViewTypeで該当する位置が通常のアイテムか広告か判断出来るようになっているものとします。#LinearLayoutManager
AdapterのonCreateViewHolderとonBindViewHolderでViewTypeごとの処理に振り分けるだけ。“`java
@Override
public ViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
if (viewType == ITEM_TYPE_ADS) {
// 広告用のViewHolderを返す
} else {
// 通常のViewH
【Kotlin 初心者】CustomDialogの作り方
ダイアログをオリジナルのデザインで使いたい時に必要になるのがこのCustomDialogになります。
### デフォルトのDialogのイメージ
| デフォルトのDialog | オリジナルのDialog |
|——–| ——|
| | |### 作り方
“`MainActivity.kt
package com.example.myapplicationimport android.os.Bundle
import android.w
ストップウォッチ
activity_main.xml
“`
既存のレイアウトの一部にJetpack Composeを組み込む
#はじめに
Google I/O 2021でアナウンスされたように、今後Jetpack ComposeでUIを組み込んでいくのが推奨されていくようです。
そこで、本記事では既存のアプリにJetpack Composeを組み込む方法を説明します。#既存のアプリにJetpack Composeを組み込む
###レイアウト
レイアウトファイルの一部でComposeを使う時の例です。“`xml
【Android / Kotlin】ズーム対応のPDF表示サンプルアプリ(PdfRenderer + PhotoView)
# はじめに
今回 Android でPDFを表示するためにはどのように実装する必要があるかを調査、検討しました。結論、Android でPDF表示をするのはかなり大変。
というかただ表示するだけであればそこまで難しくはないものの、使い勝手をよくするためにいろいろな機能を実装したりするとなると相当大変そうです。(というかそもそも可能か?ということもあります。)iOS のようには行かないみたいです。
Android 大変や…こんな意見もあって、参考にさせていただきました。
https://qiita.com/s_of_p/items/1c1a467d246ab7dc45e1そこで今回は
– PDFを1枚だけ表示(標準SDKの[PdfRenderer](https://developer.android.com/reference/kotlin/android/graphics/pdf/PdfRenderer)を利用)
– ズームイン / ズームアウトに対応(ライブラリ[PhotoView](https://github.com/Baseflow/PhotoView)を利