- 投稿日:2022-03-23T10:39:10+09:00
KotlinのDeferredについて
タイトルの通り、Deferredについて学習したことを記事に起こします。 単純に業務の中で出てきたけど、知らなかったのを理由に調べてみました。 Deferredとは「延期」という意味らしいですね。defer「延ばす」の過去形のようです。 どうやらコルーチンと共に使われるようです。でも使い方がよくわからない。 意味からなんとなく直訳して想像すると、処理を延ばしてくれる?待ってくれる?(await的な?) 調べてみると、どうやらasyncで処理しているものはdeferred型として返却されるようです。 それで後続の処理で.awaitしてやると、asyncの処理を待ってから処理してくれるようです。 結論:Deferredはasyncで処理した際に付与される型。asyncの処理を待ってから代入してくれる。
- 投稿日:2022-03-23T08:13:11+09:00
Jetpackの成り立ち
書いたこと Jetpackとは Jetpack以前の開発 まとめ - 各パッケージについて android android.support androidx Jetpackとは 2018年 Google I/Oにて発表された、これまでの android.support ライブラリーを取り替えるだけでなく、アーキテクトに関する機能が追加された新たな ライブラリー群 です。 ドキュメントには、 開発者が、ベストプラクティスに従え、ボイラーコードを削減し、 各バージョンや機種を超えて動作するコードを書くことを手助けをする ライブラリー群 であると宣言しています。 公式HPでは、ドロイドくんがJetpackを背負っている。 Jetpack以前の開発 標準SDK(androidパッケージ)時代 (2008 ~ ) 通常アプリ開発では、OSに搭載された機能を呼び出していくことで開発が行われます。 これは画面の開発(アニメーションも含めて)においても同じです。 標準SDKは、これらAndroid OSが提供してくれる機能にアクセスするためのライブラリーです。 この標準SDKによって提供される機能は、androidパッケージ配下で提供されています。 例として画面を提供してくれるActivityは標準SDKに含まれています。 // androidパッケージ配下にActivityが用意されている import android.app.Activity; public class SampleActivity extends Activity { @Override public void onCreate(Bundle savedInstanceState) { つまりOSのバージョン毎によって、その機能が提供されているかどうかというのが非常に重要になってきます。 android.supportライブラリの登場 (2011 ~ 2018) サポートライブラリの役割 アプリ開発においては、各バージョンに渡った開発が欠かせません。 そこでOSの新たな機能をアプリ側に組み込むことができるandroid.support(サポートライブラリ)が提供されるようになりました。 これによって本来サポートされていないOSのバージョンにおいても、その新機能を使うことが出来ます。 こうしたことからandroid.supportライブラリは、別名 互換ライブラリ とも呼ばれます。 例としてfragmentがあります。 fragmentは、Android v3.0から導入された機能ですが、サポートライブラリをアプリ側に組み込むことで、v1.6(APIレベル4)以上のAndroid OSでもfragmentが使うことが出来ます。 例1. androidパッケージ配下のfragmentを使用する場合 Android OSに搭載されているFragment機能を使うため、v3.0以上のアプリに限られることになる。 // androidパッケージ配下のfragmentを使用する import android.app.Fragment; public class MyFragment extends Fragment { public View onCreatedView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { 例2. android.supportパッケージ配下のfragmentを使用する場合 アプリ側にfragment機能を組み込むため、apkの容量が増大するが、v1.6以降のAndroid OSでもアプリを動作させることが出来る。 // supportパッケージ側のfragmentを使用する import android.support.v4.app.Fragment; public class MyFragment extends Fragment { public View onCreatedView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { この際、アプリで使用する外部ライブラリーとしてサポートライブラリを追加する必要がある。 dependencies { // サポートライブラリを追加する compile 'com.android.support:support-v4:23.3.0' ... } サポートライブラリの主役化と肥大化 Android v5.0(2014)からマテリアルデザインが採用されたことによって、 サポートライブラリで提供される機能もより増大していきます。 またサポートライブラリーのみで提供される新機能(RecyclerViewなど)も登場します。 これによって一部でしか使われていなかったサポートライブラリは、本格的に主役となって使われるようになっていきます。 android.support.v4.* - fragmentなどをサポート android.support.v7.* - マテリアルデザイン対応された AppCompatActivity などをサポート android.support.design.* - マテリアルデザインをサポート ... v4, v7 について ライブラリーのバージョンを表すのではなく、そのライブラリがサポートするAPIレベルを表している。 v4 - APIレベル4(Android v1.6)以上で使えるライブラリ v7 - APIレベル7(Android v2.1)以上で使えるライブラリ 例: 標準SDKのActivityではなく、サポートライブラリー側のAppCompatActivityを使用する場合 import android.support.v7.app.AppCompatActivity; public class MainActivity extends AppCompatActivity { ... こちらを使うことによって、本来Android v5.0以上でしか利用できないマテリアルデザインが、v2.1以上のAndroid OS上のアプリでも適用される。 Jetpackの誕生 (2018 ~) Jetpackは、このサポートライブラリと新たにArchitecutre Componentsを統合し、4つのカテゴリに分類します。 画像参照元 これによって、サポートライブラリで提供されていた機能は、android.supportパッケージ配下ではなく、androidxパッケージ配下に移動します。 各パッケージまとめ パッケージ名 概要 android Android OSが提供する機能にアクセスするためのAPIを提供。標準SDKと呼ばれる。 android.support 新機能をアプリ側に組み込むことで下位互換性を提供してくれるライブラリ。別名、互換性ライブラリ。現在は、deprecatedとなり、今後サポートはされない androidx Jetpackのライブラリ群が収められているパッケージ 参考書籍 2010 Google Androidアプリ開発ガイド 第2版 Androidアプリ UIデザイン & プログラミング 2011 はじめてのAndroidプログラミング入門 改訂版 Androidプログラミング入門 ゼロからのAndroidアプリケーション開発入門 はじめてのAndroidプログラミング2 Androidアプリケーション技術者ベーシック 2012 AndroidSDK 開発のレシピ 第2版 Android アプリ開発 実践ノウハウ128 Android 4.0入門―アンドロイドプログラミングの基本 2013 Androidプログラミングレシピ増補改訂版 アーキテクチャ/UI/ネットワーク編 - データフラグメントの解説がある 2014 Effective Android Android Pattern Cookbook - 画面の開発手法が詳しく解説されており、今でも十分参考になる。マスターピース。 2015 JavaからはじめようAndroidプログラミング Android プログラミングバイブル SDK5/4対応 2016 黒帯エンジニアが教えるプロの技術 Android開発の教科書 - サポートライブラリについて唯一詳細な解説がある Androidアプリ開発 パーフェクトマスター これ一冊でできる!Android Studio アプリ開発入門 初めてのAndroid 第4版 2018 基礎&応用力をしっかり育成! Androidアプリ開発の教科書 なんちゃって開発者にならないための実践ハンズオン 2019 作ればわかる!Androidプログラミング Kotlin対応 10の実践サンプルで学ぶAndroidアプリ開発入門 2020 作って学ぶ Androidアプリ開発 スタートダッシュAndroid 〜アプリエンジニアの必須ノウハウをサクっと押さえる チームのスキルアップに役立つ Android開発テクニック - ktxを使った開発手法の紹介が為になりました Android Jetpackプログラミング Android Studio 4 + Kotlin対応 - 今の所Jetpackを使ったAndroidの開発手法で唯一といえる参考書
- 投稿日:2022-03-23T01:05:07+09:00
Jetsonのdeepstreamの動画をAndroid端末で確認する
ここではAndroid端末(スマートフォン)とJetsonは同じLAN内に接続されていることが前提です。 まずJetsonのローカルIPアドレスを確認します。 $ip a 私のJetsonのローカルIPアドレスは「192.168.0.114」です。 次にdeepstreamのconfigファイルを編集します。 今回は例としてサンプルのファイルを編集します。 $cd /opt/nvidia/deepstream/deepstream-5.1/samples/configs/deepstream-app $vi source1_csi_dec_infer_resnet_int8.txt 次のように[sink]のうち1つをenableにして そのtypeを4にします。 [sink] enable=1 type=4 typeについての詳細希望の方は以下のSink Groupの項をご確認ください。 https://docs.nvidia.com/metropolis/deepstream/5.0DP/dev-guide/index.html#page/DeepStream_Development_Guide/deepstream_app_config.3.2.html deepstreamを使って実行します。 $deepstream_app -c source1_csi_dec_infer_resnet_int8.txt Android端末側のVLCアプリでネットストリームを起動し次のアドレスを指定します。 rtsp://192.168.0.114:8554/ds-test Android端末の画面に動画が映れば成功です。