- 1. 【Android】ContentResolverのinsertがnullになる場合
- 2. Cordova開発環境をWindows10 + AndroidとMac + iOSでそれぞれ構築
- 3. 9. 【Android/Kotlin】動的にViewを追加
- 4. [覚え書き]AndroidにWindowsからadbコマンドで接続する
- 5. UnityPlugin/Android/基本
- 6. 8. 【Android/Kotlin】ウェブビュー(WebView)
- 7. ContextからStartActivityする際の注意
- 8. 【スマホアプリでグラフ】MPAndroidChartまとめ
- 9. Google認証
- 10. Androidアプリに広告を貼る方法
- 11. AndroidのKotlinで電卓作成 プログラム編
- 12. Android 8.0以降で充電状態の変化を監視する方法について調査してみた
- 13. 画面上の戻るボタン
- 14. AndroidのHiltをJavaで実装してみる
- 15. ConstraintLayout入門その7 – Guideline, Barrier
- 16. Android 入力後キーボードを閉じる方法
- 17. Androidでアプリ内のLocaleを変更せずに他言語リソースを取得する
- 18. ARCore Depth APIについて
- 19. Visual Studio 2019のC#にて、Bitmapオブジェクトを、Android環境下において直接Windows Bitmapファイルにバイナリを叩いて出力する。コードのサンプルです。
- 20. 【Android】lateinit と by lazy の使い分け【Kotlin】
【Android】ContentResolverのinsertがnullになる場合
# ContentResolverのinsertがnullになる
そのファイルが存在しているのにinsertをかけようとすると返り値がnullになります。“`
val values = ContentValues().apply{
put(MediaStore.Images.Media.DISPLAY_NAME, “hoge.jpg”)
put(MediaStore.Images.Media.RELATIVE_PATH, “Pictures/fuga”)
put(MediaStore.Images.Media.MIME_TYPE, “image/jpg”)
}
val uri = contentResolver.insert(
MediaStore.Images.Media.getContentUri(MediaStore.VOLUME_EXTERNAL_PRIMARY),
values
)
Log.d(“log”,uri.toString())
—
2020-09-19 22:23:48.688 29801-29801/com.exa
Cordova開発環境をWindows10 + AndroidとMac + iOSでそれぞれ構築
# Cordovaのインストール(共通)
Windows、Macともに共通で実施します。
npmが必要なので事前に入れておきます。
私はWindowsならnodist、MacならnodebrewでNode.js環境を作りました。Cordova公式サイトの「[Get Started](https://cordova.apache.org/#getstarted)」に沿って進めます。
“`
> npm install -g cordova> cordova –version
10.0.0> cordova create MyApp
Creating a new cordova project.> cd MyApp
“`## Cordovaアプリをブラウザで動かす
プラットフォーム(Cordovaの実行環境)を追加して動かしてみます。
まずはブラウザで動かします。“`
> cordova platform add browser
Using cordova-fetch for cordova-browser@^6.0.0
Adding browser
9. 【Android/Kotlin】動的にViewを追加
#はじめに
DreamHanksのMOONです。前回は`WebView`というViewについて説明しました。
[8. 【Android/Kotlin】ウェブビュー(WebView)](https://qiita.com/DreamHanks/items/25a41d79d8a58db11f80)今回は動的にViewを追加する方法について説明していきます。
#動的に追加の意味
以前まではViewやレイアウトを追加するためにレイアウトのxmlファイルに追加しましたが、
その方法は静的に追加する方法です。例)チャットアプリで会話内容が追加されると、画面上にテキストを追加しなければならない状況があります。
動的にViewを追加する方法はActivityからViewを追加することです。
今回はテキストを入力し、そのテキストを画面上に動的に追加して表示していきます。
#ActivityからViewを追加
・レイアウトのxmlを作成![1.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/7086
[覚え書き]AndroidにWindowsからadbコマンドで接続する
FireHD10のLauncherをAmazon謹製からNovaLauncherに変更するためにadbコマンドに関して調べたメモ。
# Android SDKツールを入手する
## ダウンロード
公式サイトからWindows向け「Android SDKプラットフォームツール」をダウンロードする。
[SDK Platform-Tools リリースノート | Android デベロッパー | Android Developers](https://developer.android.com/studio/releases/platform-tools)
## 任意の場所に解凍する
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/223848/526cbdd7-6fc8-2e60-dcda-466a1173b963.png)
# コマンドプロンプトから操作する
操作するAndroid側は開発者モードになってUSBデバッグを有効にしておきます。
※
UnityPlugin/Android/基本
#[環境]
OS: windows10 pro
IDE:Android Studio4.0.1
Unity 2019.4.5f1
確認した実機: Galaxys8#[参考]
[Android用Plugin(java[aar])の作成(https://qiita.com/fukaken5050/items/c9ac144344c5f6ff9f57)
https://qiita.com/okuhiiro/items/1aaec487d1ab8b086095
https://note.com/attomicgm/n/ncb22f460e8b6https://baba-s.hatenablog.com/entry/2018/09/18/170000 確認済
# 本文
# UnityでAndroidProjectを出力する
・適当にCUBE等を配置する。
・Unit
8. 【Android/Kotlin】ウェブビュー(WebView)
#はじめに
DreamHanksのMOONです。前回は簡単なログイン画面を作り、バリデーションチェックをしました。
[7. 【Android/Kotlin】バリデーションチェック](https://qiita.com/DreamHanks/items/81511dae61cc9c4a7e63)今回は`WebView`というViewについて説明していきます。
#WebViewとは
ウェブ アプリケーション(またはウェブページ)をクライアント アプリケーションの一部として提供する場合は、WebView を使用できます。
この意味は簡単にアプリの画面上にウェブページを表示することができます。#WebView追加
###1.権限設定
ウェブビューでウェブページを表示するためには、まず、そのアプリのインターネットアクセス権限を設定する必要があります。
・AndroidManifestファイル修正“`xml:AndroidManifest.xml
ContextからStartActivityする際の注意 以前KudanARライブラリを使用したKudanARアプリをリリースしました。
[Xamarin.FormsでKudan ARを試してみる](https://qiita.com/takapi_cs/items/581654f38ddb06a8e81c)そのアプリのテスト環境として使用していたAndroid8.0では発生しなかったが、Android9.0だと発生するエラーがありました。
少し調査したので軽くまとめたいと思います。# 先に結論
Contextの実体には`Application Context`、`Activity Context`があります。
実体を把握した上で使用しよう。# 現象
まずは、下記が確認できたエラーメッセージの内容です。“`
Android.Util.AndroidRuntimeException: ‘Calling startActivity() from outside of an Activity context requires the FLAG_ACTIVITY_NEW_TASK flag. Is this really
【スマホアプリでグラフ】MPAndroidChartまとめ
#MPAndroidChartとは?
MPAndroidChartとは、Philipp Jahoda氏作成の、**Andoroidでグラフを作るためのライブラリ**です。
Andoridアプリにおけるグラフ描画の、デファクトスタンダードとも言える存在となっています。
(下の図は、本ライブラリを使用して私が作成したグラフの一例です。日なたの気温が凶悪ですね‥)
![Temerature.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/610167/065d4078-fe02-1955-6a8e-e0aa6b37d0b2.png)また、**[iOS版のCharts](https://github.com/danielgindi/Charts)**ライブラリも存在し、こちらも広く開発に使われています。
[公式GitHub](https://github.com/PhilJay/MPAndroidChart)のAboutには
`A powerful ? Android chart view / grap
Google認証
公式ドキュメントに沿って進めていく↓
[Android で Google ログインを使用して認証する]
(https://firebase.google.com/docs/auth/android/google-signin?hl=ja)SHA証明書フィンガープリント作成↓
[Authenticating Your Client](https://developers.google.com/android/guides/client-auth)“`
% keytool -exportcert -alias androiddebugkey -keys
No Java runtime present, requesting install.
“`javaが入っていなければインストール↓
[MacOS JDKのインストール方法](https://maysatsuki.com/mac/jdk/90)
AndroidアプリへのGoogleログインの統合↓
[Integrating Google Sign-In into Your Android App]
(https://
Androidアプリに広告を貼る方法
https://akira-watson.com/android/admob-google-play-service.html
https://developers.google.com/admob/android/quick-start?hl=ja#kotlin
https://developers.google.com/admob/android/banner?hl=ja
#ソースコード設定
下記適切なバージョンを使用
https://developers.google.com/admob/android/quick-start?hl=ja“`build.gradle
dependencies {
implementation ‘com.google.android.gms:play-services-ads:19.3.0’
}
“`ネットワーク権限などを設定
“`AndroidManifest.xml
AndroidのKotlinで電卓作成 プログラム編 下記の記事
https://qiita.com/yanasep/items/503b378c439752f70880
を参考にしながら電卓を作成しました。
全コード
https://github.com/CoffCookie/calcApp.git数字ボタン
初期値の0だったら、ボタンの数字を入れ、それ以外だったら、入力した値を追加して行きます。“`Kotlin:calcApp/app/src/main/java/com/example/calcapp/MainActivity.kt
zero.setOnClickListener{
if (calc_display.text == “0”) calc_display.text = “0”
else calc_display.text = “${calc_display.text}0”
inputNum += “0”
}
one.setOnClickListener{
if (c
Android 8.0以降で充電状態の変化を監視する方法について調査してみた
# 背景
Android で充電状態の変化を監視する方法として、[BroadcastReceiver](https://developer.android.com/guide/components/broadcasts?hl=ja)を使って[リアルタイムに充電状態を監視する方法](https://developer.android.com/training/monitoring-device-state/battery-monitoring?hl=ja#MonitorChargeState)があります。
> デバイスを電源に接続するか未接続にすると、BatteryManager によってアクションがブロードキャストされます。アプリが実行されていないときでもこれらのイベントを受信することが重要です(特に、これらのイベントがバックグラウンド アップデートを開始するためにアプリを起動する頻度に影響する場合)。したがって、BroadcastReceiver をマニフェストで登録し、ACTION_POWER_CONNECTED と ACTION_POWER_DISCONNECTED をインテ
画面上の戻るボタン
http://rikisha-android.hatenablog.com/entry/2014/04/04/202207
“`kotlin
override fun onCreate(savedInstanceState: Bundle?) {
..
//戻る
supportActionBar?.setDisplayHomeAsUpEnabled(true)
}override fun onOptionsItemSelected(item: MenuItem): Boolean {
when (item.itemId) {
android.R.id.home ->{
finish()
return true
}
else -> return super.onOptionsItemSelected(item)
}
}
“`
AndroidのHiltをJavaで実装してみる
# はじめに
Hiltのアルファ版が出たので調査しました。
あのわかりづらかったDagger2が非常にわかりやすくなっていました。導入の敷居がさがったと思います。そこで、「DIしたい、Hiltを使ってみたい、基本的なことを知りたい」という方に向け、サンプルアプリを作成しながら基本的なことを説明したいと思います。
なお、Dagger2からHiltへの移行方法などは記載していません。# いきなり実装
概要等の説明は省き、いきなり実装です。DIやHiltについては[公式ページ](https://developer.android.com/training/dependency-injection?hl=ja)を参照してください。
今回作成するサンプルは、画面の中のボタンを押すとデータベースを検索し結果を表示するアプリです。作成するクラスの構成は以下のようにします。
MainActivity –> SampleUseCase –> SampleRepository –> SampleDao –> DBこのアプリを`Hilt`を使って実装します。
データベースまわりは`Ro
ConstraintLayout入門その7 – Guideline, Barrier
ConstraintLayoutを使用するための設定については、[ConstraintLayout入門その1](https://qiita.com/yamadacsa/items/a4fcf4de9982111cdb7c)をご覧ください。
## ConstraintLayout2.0安定版ようやく登場
alphaもbetaもつかないConstraintLayout2.0安定版がようやくリリースされました。本記事執筆時点の最新安定版は[2.0.1](https://androidstudio.googleblog.com/2020/08/constraintlayout-201.html)です。
今後、筆者の書くConstraintLayout入門の記事は、バージョン2.0準拠といたします。
## 補助線
ConstraintLayoutでは、子Viewそのものの配置のほか、「補助線」となる表示対象外のオブジェクトを設置し、これを子Viewに参照させることで子Viewの位置を規定することができます。[Guideline](https://developer.android.co
Android 入力後キーボードを閉じる方法
[参考](https://qiita.com/bassaer/items/0e412d9f36b2113ee8d0)
“`kotlin
private fun hideKeyboard(view:View?) {
if(view != null) {
val manager = this.getSystemService(Context.INPUT_METHOD_SERVICE) as InputMethodManager
manager.hideSoftInputFromWindow(view.windowToken, 0)
}
}
“`
Androidでアプリ内のLocaleを変更せずに他言語リソースを取得する
# はじめに
Androidで言語を切り替える場合、下記のようにActivityのattachBaseContextでlocaleを設定するのが一般的です。(API 25でupdateConfigurationはdeprecatedとなり、[createConfigurationContext](https://null-i.net/index.html?AndroidJava/%E6%97%A5%E6%9C%AC%E8%AA%9E%E3%81%A8%E8%8B%B1%E8%AA%9E%E3%81%AA%E3%81%A9%E3%81%A7%E5%88%87%E3%82%8A%E6%9B%BF%E3%81%88%E3%82%8B)の利用が推奨されています。)
ですが、一つの画面に複数の言語リソースを表示したい場合や言語切替時にActivityをrecreateしたくない場合、この方法は使えません。今回は一時的に変更できるようにする方法をメモしときます。
“`kotlin:MainActivity.kt
override fun attachBaseContext(base: C
ARCore Depth APIについて
# ARCore Depth APIとは
Googleの拡張現実(AR)に関するアップデートであり、ARCoreに追加された新しいAPI。
Depthセンサなどの専用の機器を用いることで、デバイスに搭載されたRGBカメラを用いた深度マップの生成を行うことが可能になっています。# そもそもDepthセンサとは何か
Depth = を測定するセンサ。
これによって深度を目に見える形(色など)で表現したものがDepth Map(深度マップ)。
Depth APIはサーモグラフィのような色で表現されています。# Depth APIのここがすごい!
大きく分けて2点– オクルージョンの表現
– 専用の機器を追加で取り付ける必要がない## オクルージョンの表現
遮蔽の表現のこと。手前のものが後ろのものを隠す表現をオクルージョンといいます。
現実の世界では当たり前にあるものではあるが、ARの場合、現実世界のオブジェクトや他の3Dオブジェクトとの距離を考慮しながら3Dモデルの表示をコントロールしなければ、適切な遮蔽表現はできません。ARの現実感に影響する重要な要素でもあります。
Visual Studio 2019のC#にて、Bitmapオブジェクトを、Android環境下において直接Windows Bitmapファイルにバイナリを叩いて出力する。コードのサンプルです。
表題の通り
[かつてのWindows版に続いて
https://qiita.com/oyk3865b/items/58abd56c5c1edcc84118](https://qiita.com/oyk3865b/items/58abd56c5c1edcc84118)今回は
Visual Studio 2019のC#にて、
Android環境下において
Bitmapオブジェクトを、直接Windows Bitmapファイルにバイナリを叩いて出力する。
コードのサンプルでございます。特段、NuGetなどで他のプラグインや
別途外部dllを必要としないようにしています。要は、バイナリを以下のように、直接叩いています。
1.Bitmapのピクセル情報をバイナリ配列に書き出す。
2.Bitmapのヘッダーの書き込み。
3.4の倍数のルールに従いBitmapバイナリをファイルに書き出す。Android開発環境では、
bitmap.Compress(Bitmap.CompressFormat.Png, 100, fos);みたく
bitmap.
【Android】lateinit と by lazy の使い分け【Kotlin】
# プロパティの初期化を遅らせる方法
Android 開発ではプロパティの初期化を遅らせたい場面がけっこうあります。
例えば、以下のようなケース。
“`.kotlin
class MainActivity : AppCompatActivity() {
// この時点では view が生成されていないので初期化できない。
private var textView: TextView? = nulloverride fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
// ここで初めて初期化できる。
textView = findViewById(R.id.text_view)
}//…
}
“`Kotlin でプロパティの初期化を遅らせる方法として `lateinit` と `by lazy` がよく使われると思うのですが、機能が似ているのでどのように使い分ければいいの