- 1. 外部ストレージにファイルを保存する
- 2. [Online] potatotips #69 iOS/Android開発Tips共有会 備忘録
- 3. OkHttpで認証付きのプロキシ通信を行う
- 4. Android の MultiModule Project に Dagger を導入して雰囲気を理解する
- 5. Delphi10 AndroidでTLS対応メール受信
- 6. [Android]ライブラリ導入方法
- 7. AndroidのversionNameを自動管理する
- 8. 子ビューのタップ可能エリアを拡張するTouchDelegateをBindingAdapterで簡単に使う
- 9. 非rootなAndroidでSesame miniの鍵を取得した時のメモ
- 10. Javaで書いていたAndroidプロジェクトをKotlinに変換してみる
- 11. Unityのモバイルゲーム向けクラッキングが行われるポイントを整理してみた
- 12. テキストやボタンの端を丸くする Android
- 13. 【Unity + AdMob + CocoaPods + iOS】エラーなくビルドを通すための最適解【Androidにも応用できる】
- 14. 関数型プログラミング-Applicativeって何が嬉しいの?-
- 15. [Android][Kotlin]背景をタップしてキーボードを非表示にする
- 16. スマートアプリの脆弱性診断
- 17. Firebase ML 備忘録(クイックスタート)
- 18. monkeyrunnerでAndroidの自動化テスト作成
- 19. React Native BLEペリフェラルをスキャンする
- 20. AndroidからUSB HIDでマイコンを制御してみる
外部ストレージにファイルを保存する
Androidで外部ストレージにファイルを保存する
実装の参考サイトをメモしておく**■参考サイト**
https://akira-watson.com/android/external-storage-file.html
[Online] potatotips #69 iOS/Android開発Tips共有会 備忘録
# はじめに
補欠から繰り上がり、[[Online] potatotips #69 iOS/Android開発Tips共有会](https://potatotips.connpass.com/event/171532/)に参加できたので、備忘録を残します。connpass のイベントページにも記載がありますが、
[github](https://github.com/potatotips/potatotips/wiki/potatotips-69)で今までのイベントのテーマや資料を管理していて、取り組みもとても参考になります。# 各発表に対する感想
どれも面白い発表でしたが、今回は自分がメインで聞いていたテーマに絞ります:bow:ML Kit (Auto ML Vison Edge)で写真から家族を検出する
—
[ブログ(スライドは末尾)](https://techblog.timers-inc.com/entry/2020/04/24/143803)**やりたいこと**
– 写真アプリで家族を検出できるようにする(今回は、大人・子供・猫・犬の区別)
– 使ったのは
OkHttpで認証付きのプロキシ通信を行う
Androidだと、認証なしのプロキシの場合は端末の設定画面から設定することができますが、認証付きのプロキシは端末の設定画面から設定することができません。(ユーザー名とパスワードを入力できない。)
今回どうしても認証付きのプロキシで通信を行いたかったので
、色々と調べてみたのですが、OkHttpでサクッと対応できてしまったのでメモがてら投稿。# `proxyAuthenticator` を使う
`OkHttpClient.Builder` の `proxyAuthenticator` で認証情報を設定します。
下記サンプルコードでは、ユーザー名 `username` 、パスワード `password` としています。
“`kotlin
val client = OkHttpClient.Builder()
.proxy(Proxy(Proxy.Type.HTTP, InetSocketAddress(“http://example.com”, 3128)))
.proxyAuthenticator(object : Authenticator {
Android の MultiModule Project に Dagger を導入して雰囲気を理解する
在宅勤務になり時間ができてきたので、今まで難しくて手を出すのを躊躇っていた Dagger に挑戦しようと思いました。
Room のまとめをやろうと思っていましたが、自分の中で HOT な物からと思って順番が前後してます。メッセージをリストで表示するチャットアプリ __ライク__ なプロジェクトを MultiModule にしました。
これを Dagger を使ってモデル層を DI するお勉強です。色んな記事を見ましたがひとまずとっかかりを作るため、先人の知恵をフンダンに使用しています。理解するぞ
ほぼほぼ覚書なので雰囲気を掴んでいただけたら幸いです。。。## Environment
– Android Studio: 3.6
– Gradle Plugin: 3.5.2Dagger のライブラリは以下
(MultiModule 前提なので buildSrc に纏めています。)今回は Android 用のサブライブラリを用いて実装していきます。
“`Dep.kt
object Dagger {
const val version = “2.26”
Delphi10 AndroidでTLS対応メール受信
#はじめに
Delphi10 でAndroidアプリを作るの2本目です。
↓1本目はこちら
https://qiita.com/kenken2go/items/f2459caaa6cd649dae33
Internet系コンポーネントIndy もモバイルアプリで使えるとのことなので
今回はメール受信をやってみました。opensslを使ってTLSをサポートすることで
GMAILやOffice365でも使えることを確認してみます。#評価環境
開発マシン: Windows10 professional (Core i5-3337U 1.8GHzで重いですT_T)
Delphi : Delphi 10.3.3 Community Edition
Androidマシン:Nexus7 (32bit)
Androidバージョン:6.0.1#Android側の準備
開発マシンとNexus7をUSBケーブルでつなぐ
設定-開発者向けオプションで
・USBデバッグモードをONにする
・スリープモードにしないをONにする#画面作成
メール受信設定、ボタン類、メールタイトル、メール本文 のコン
[Android]ライブラリ導入方法
# ライブラリ導入方法
以下の手順となります。
・Module 追加
・dependencies追加
・プロジェクトビルド## Module 追加
AndroidのversionNameを自動管理する## 問題
apkを配布するために、app/build.gradle の`versionName`のみをインクリメントしてプルリクエストを出す。
これはなかなか面倒だし、手間だなと思った。versionName なんて修正するまでもなく、自動で加算されてほしい。
## どうしたか?
そこで`versionName`に日時にしてはどうだろう?
イメージはこんな感じ
“`gradle:app/build.gradle
static def getCustomVersionCode() {
return new Date().format(‘yyMMddHHmm’).toInteger()
}android {
compileSdkVersion 29
defaultConfig {
applicationId “com.xxxx”
minSdkVersion 21
targetSdkVersion 29
versionCode 1
versionName “1.0-
子ビューのタップ可能エリアを拡張するTouchDelegateをBindingAdapterで簡単に使う
最近Androidのレイアウトの勉強の取り組みとしてTwitterを模倣して実装する学習をやっています。その際、アイコンのImageViewをタップした時に、思うようにタップできないことがあります。
Gif画像では、カードの右側の逆三角形アイコンをタップしようとしていますが、ちょっとずれただけでカードへのタップイベントだと認識されてフィーリングが良くないの図です。
実際に配置しているImageViewがこれなのですが、小さい三角形のアイコンなので、幅22dpを指定しています。“`xml
非rootなAndroidでSesame miniの鍵を取得した時のメモ
root化済みのAndroidがなかったので、非rootの環境でSesameの鍵をぶっこ抜いてみました。
(既出ならすみません)
セサミアプリのバージョンは1.3.9にて確認## 前提条件
・Android Studio(adb/jre/jarsigner/keytoolを利用)がインストールしてあること
・USBデバッグが有効にしてあること
・SESAMEの設定が済んでいること
・SESAMEにGoogleで登録した場合はパスワードを設定してあること(メールアドレスでログインします)## 準備
・以下よりapktool 2.3.4 (2.4系不可) をダウンロード
https://bitbucket.org/iBotPeaches/apktool/downloads/
・AirDroid等でセサミアプリをぶっこ抜く## アプリの書き換え
以下のコマンドにてセサミアプリのdecompileを行います。
カレントディレクトリにapkファイル名のディレクトリが作成されsmal
Javaで書いていたAndroidプロジェクトをKotlinに変換してみる
# 背景
昔、JavaでAndroidプロジェクトを書いていたものがある。その当時からAndroidバージョンが上がった事に伴い、古いプロジェクトを再度読み込み何とか新しいバージョンに対応する事が出来た。
そんな中、最近ではKotlinがAndroid開発の標準言語として普及しているという事を知る。
次に何か作る時にはKotlinかな、と思っていた所に、簡単にjavaからKotlinに変換出来るという話を聞く。という事で、今後の為にも今のうちにKotlinに変換してみる。
ついでに今までしていなかったGithubでの管理も始めてみる。# 環境
Android studio 3.5.3 (後で3.6.3に上げた)# 前準備
## Githubにjava状態でのプロジェクトを保持
何かあった時の為に元に戻せるようにはしておきたい。これを機にGithubも始める。
[\[Android Studio\] GitHub と連携してみる](https://dev.classmethod.jp/articles/android-studio-git-integration/)を参考にする
Unityのモバイルゲーム向けクラッキングが行われるポイントを整理してみた
#免責事項
**この記事に記載されている内容を、実際に試して発生した損害に対していかなる責任も負いません(補償しません)。**
**すべて自己責任のもとで行ってください。**リリースされているアプリやゲーム、[ソフトウェア利用許諾契約(EULA)](https://ja.wikipedia.org/wiki/%E3%82%BD%E3%83%95%E3%83%88%E3%82%A6%E3%82%A7%E3%82%A2%E5%88%A9%E7%94%A8%E8%A8%B1%E8%AB%BE%E5%A5%91%E7%B4%84#%E3%83%AA%E3%83%90%E3%83%BC%E3%82%B9%E3%82%A8%E3%83%B3%E3%82%B8%E3%83%8B%E3%82%A2%E3%83%AA%E3%83%B3%E3%82%B0)やアプリケーション利用規約などでリバースエンジニアリングは禁止されています。
実際に試す場合は、自分で開発しているアプリやゲームや脆弱性確認用でリリースされているアプリやゲームを使いましょう。勘違いして理解しており、誤ったことを記載しているとこ
テキストやボタンの端を丸くする Android
#はじめに
テキストやボタンの端を丸くする方法を簡単にまとめました。#1.Layout resource file の作成
layout_width 200dp
layout_height 50dpのTextViewの端を丸くさせます。
drawableフォルダに`Drawable resource file`を作成する
【Unity + AdMob + CocoaPods + iOS】エラーなくビルドを通すための最適解【Androidにも応用できる】こんにちは!
ねこじょーかー([@nekojoker1234](https://twitter.com/nekojoker1234))と申します。みなさんは、UnityEditor 上だけでなく、実機で動作確認したことはありますか?
**実機で動作確認をするには「ビルド」が必要になるのですが、これがまた本当にやっかいです。**
何がやっかいなのかと言うと、とにかくエラーが出ることが多く、そしてそのエラー解決も一筋縄ではいきません。私が遭遇したやっかいなエラーたちは以下の通り。
– GoogleMobileAds/GoogleMobileAds.h’ file not found
– Undefined symbols for architecture arm64
– Undefined symbols for architecture armv7
– linker command failed with exit code 1エラー内容で調べるといろいろと情報は出てくるのですが、Unity のバージョンが新しいせいか、どれも解決にはいたりませんでした。
> – [Un
関数型プログラミング-Applicativeって何が嬉しいの?-
今回は、関数型プログラミングにおけるApplicative Functorの有用性について軽く触れたいと思います。プログラミング言語は前回同様、Haskellを用います。
## Functorでできない計算
[前回の記事](https://qiita.com/masaki_shoji/items/af5ab8b9496f0a6dfbbc)で見た通り、ファンクター値の中身の関数を、別のファンクター値に写そうとしたとき、fmapの定義ではその計算が実現できないのでした。※ここは前回の記事と一部内容が重複しているため、読み飛ばしても構いません。例えば、以下のようなコードはfmapの型定義と矛盾が発生するため、コンパイルエラーとなります。
“`haskell
fmap (Just (5*)) (Just 3) –このコードはコンパイルエラーとなる
“`なぜ、上記のコードがエラーになるかを改めて振り返っておきます。
まず、Functorクラスのfmapの定義を改めて見てみましょう。“`haskell
class Functor f where
fmap :: (a
[Android][Kotlin]背景をタップしてキーボードを非表示にする
## 画面側
“`xml
スマートアプリの脆弱性診断 #アプリの脆弱性診断サービスとは
「アプリケーション脆弱性診断サービス」は、お客様が開発したスマートフォンアプリケーションのセキュリティ対策が適切であるかを診断し、問題点の有無をご報告するサービスです。
インターネットを介した不正アクセス被害が日々報じられる昨今、 その手法を理解し攻撃からシステムを守る技術の重要性はかつてなく高まっています。
#脆弱性診断サービスの分類
自動ツールだけに頼らない手動診断と、リバースエンジニアリングによる高度な解析技術によりの手動診断があります。
1.Webアプリ脆弱性診断
2.スマホアプリ脆弱性診断IOS/Android
3.ペネトレーションテスト(侵入テスト)#スマホアプリ脆弱性診断の項目
OWASP Mobile Top 10を基準とします
#報告書
Firebase ML 備忘録(クイックスタート)
# はじめに
Firebase ML を試す機会があったので、
その時にやったこと・わかったことを備忘録に残します。# 参考にしたサイト
[公式](https://firebase.google.com/docs/ml-kit?hl=ja)一番手軽に始めるなら、
[クイックスタートサンプル](https://github.com/firebase/quickstart-android/tree/master/mlkit)をDL( clone は一つ上の階層から他のPJも含めてになります)して、
Firebaseにパッケージを登録するのが一番早かったです。
(逆に、Firebase使ってる既存のPJのパッケージ名にアプリを寄せちゃうかですね…)自分でコードを書いて、作ってみる場合は[コードラボ](https://codelabs.developers.google.com/codelabs/mlkit-android/#0)が一番いいです。
CameraXも使いながら、テキスト解析・顔認識・バーコード解析をやってみましたが、
ある程度APIのインタフェースは揃っていたので
monkeyrunnerでAndroidの自動化テスト作成
# Androidの操作を自動化してテストを自動化する
## 開発環境
Mac 10.14.6## やったこと
* Mac でmonkeyrunnerを動かすためにopenjdk8のインストール
* monkeyrunner で操作を記録
* 記録した操作で実行## 参考にしたサイト
https://qiita.com/ikota/items/ef6bdb4dad6ab9ba912a
https://developer.android.com/studio/test/monkeyrunner/MonkeyDevice?hl=ja##手順
### monkeyrunnerの実行環境の構築
すでにAndroid StudioがDownloadされている環境ではmonkeyrunnerが以下にある。
/Users/xxx/Library/Android/sdk/tools/bin/monkeyrunnerターミナルからmonkeyrunnerを実行すると、以下のエラーが出て実行できない。
~~~
./monkeyrunner
-Djava.ext.dirs=/User
React Native BLEペリフェラルをスキャンする
# はじめに
React Nativeアプリケーションで、BLEペリフェラルデバイスのスキャンを行います。Androidでのみ動作確認していますが、Androidのみで動作可能なAPIは利用していないので、iOSでも動作可能かと思います。OSSはBLE Managerを利用します。https://github.com/innoveit/react-native-ble-manager
# 初期セットアップ
まず通常通りアプリケーションの雛形を作り、それからyarn addでBLE Managerをインストールします。“`bash
$ react-native init BLESample
$ cd BLESample
$ yarn add react-native-ble-manager
“`Androidのマニフェスト(android/app/src/main/AndroidManifest.xml)に以下の3つのパーミッションを設定する。
“`xml
AndroidからUSB HIDでマイコンを制御してみる AndroidからUSB HIDでマイコンを制御するまとまった例が見当たらなかったので、試作してみました。
# 概要
Android端末のUSB端子にマイコンをつなぎ、マイコン上に搭載されたLEDの点灯をAndroidアプリから制御します。
マイコンには[ARM mbed](https://os.mbed.com/)を用い、Androidとマイコン間はUSB HIDで通信します。![概要](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/67657/37edfc67-ef5a-180a-a52b-91cb09c59037.png)
# ソースコード
https://github.com/yhirano/android_usb_hid_sample/
# mbedとは
mbedはARM社のプロトタイピング用マイコンボードとそれの開発環境です。
mbedに似たプロトタイピング環境としてはArduinoがありますが、Arduinoに比較すると、ブラウザ上で動くオンライン開発環境で開発ができるためにコンパイ