🎃

ARのSNS ソースコード公開します

2024/12/09に公開

経緯

何回かの記事に分けて発信していたARのSNSアプリなんですが、アプリをリリースしようとしたら、Google Play Storeのリリース基準に阻まれた為、リリースは諦めてソースコードを公開することに決めました。

https://qiita.com/yuto-ktok/items/f13d56d6aaceba892ecb#:~:text=Googleは、2023年11,使ってもらうだと!!

機能

基本的にARCore + Geospatial APIを使い拡張世界にコンテンツを投稿でき、他者が投稿したコンテンツを閲覧できます。

画面構成は以下のようになっており、左上の電波塔のアイコンが現在の位置情報の精度、その隣が現在取得しているコンテンツ数を表しています。

Screenshot_20241208-170901 (1) (1).png

初回起動または、ユーザアイコンをタップするとユーザ登録・編集画面に遷移して、ユーザアイコン、ユーザ名、投稿のベースの文字の色、コンテンツの色が入力できます。

Screenshot_20241208-172335 (1).png

チャットマークをタップすると投稿したい内容を入力できる画面に遷移します。ここで投稿する文字の色やオブジェクトの色も選択できます。

Screenshot_20241208-155428 (2).png

絵文字マークをタップすると投稿したい絵文字が選択できます。

Screenshot_20241208-155441 (2).png

このどちらかの操作を行った状態で画面を長押しすることでコンテンツが拡張世界に映し出されます。この時1本指の操作でコンテンツの移動、2本指の操作でコンテンツの回転が行えます。位置、向きが決まったら再度長押しでコンテンツが他ユーザからも閲覧可能になります。

Screenshot_20241208-135325 (1).png

ソースコード

ソースコードはgithubで公開しています。ARCoreのAPIキーやデータベースのアクセス、文字フォントファイルはignoreしているので、そのあたりを補完したら動くと思います。
 公開する予定はなかったので、ディレクトリ構成とかあまり綺麗にしていないので、ご容赦ください。分からない、気になるところあれば回答します。

https://github.com/shimizu223/ar_memos_oss

以下のクラスがレンダリングを行うクラスで、投稿したい内容(テキスト、絵文字の種類)を元にオブジェクトの作成、描写を行ったり、位置情報が一定幅動いたらDBに現在地の近くのオブジェクトを取得して、取得情報を元にオブジェクトの作成、描写を行ったりしています。

https://github.com/shimizu223/ar_memos_oss/blob/oss/app/src/main/java/com/shimizu/ar/core/ar_message/kotlin/ar_message/MessageRenderer.kt

以下のディレクトリはプロジェクトで利用するユーザ定義型やファーストクラスコレクションを定義しています。

https://github.com/shimizu223/ar_memos_oss/tree/oss/app/src/main/java/com/shimizu/ar/core/ar_message/kotlin/domain

Discussion