Skip to content

カメラ 制作ログ

Xamarinで、カメラ起動して、にゃかにゃかするアプリを作ろうと思ったけど、あまりにも上手く行かなさ過ぎて付け始めたログ。    

MediaPlugin

https://github.com/jamesmontemagno/MediaPlugin      
最初、Shared Projectsでやってたけど、行き詰ったからやり直し。

-1-

ファイル→新規作成→新しいプロジェクト→Mobile App(Xamarin.Forms)→
.NET Standard

-2-

<NuGet>
ツール→NuGetパッケージマネージャー→ソリューションのNuGetパッケージの管理

Xam.Plugin.Media

-3-

MainActivity.cs に、以下を追加。

        public override void OnRequestPermissionsResult(int requestCode, string[] permissions, Android.Content.PM.Permission[] grantResults)
        {
            Plugin.Permissions.PermissionsImplementation.Current.OnRequestPermissionsResult(requestCode, permissions, grantResults);
        }

-4-

Android側のプロジェクトにて右クリック→Androidマニフェスト

以下を追加。

  • WRITE_EXTERNAL_STORAGE
  • READ_EXTERNAL_STORAGE

-6-

AssemblyInfo.cs に、以下を追加。

[assembly: UsesFeature("android.hardware.camera", Required = false)]
[assembly: UsesFeature("android.hardware.camera.autofocus", Required = false)]

-7-

AndroidManifest.xml に、以下を追加

      <meta-data android:name="android.support.FILE_PROVIDER_PATHS" 
                     android:resource="@xml/file_paths"></meta-data>

-8-

Resources フォルダに、xmlを作成。file_paths.xmlを作成。

<?xml version="1.0" encoding="utf-8"?>
<paths xmlns:android="http://schemas.android.com/apk/res/android">
    <external-files-path name="my_images" path="Pictures" />
    <external-files-path name="my_movies" path="Movies" />
</paths>

-9-

ソース記述。
Plugin を認識しねえええええええ!!!!!

NuGetのXam.Plugin.Media、警告マーク出てるし、何なのこれ。

(中断)

下関行ってきます。

-10-

何故か通るビルド。
何故か消えている警告マーク。
何でやねん。
とりあえず実行。

-11-

エラー発生

Unhandled Exception:

System.ArgumentException: Unable to get file location. 
This most likely means that the file provider information is not set in your Android Manifest file. 
Please check documentation on how to set this up in your project.

-12-

これで行ける?
https://forums.xamarin.com/discussion/119942/mediaplugin-argument-exception-unable-to-get-file-location

-13-

できぬ。ビール飲む。

-14-

ファイルのアクセス権限の問題か。
デフォルトの保存先を本体にしたらいいの?

-15-

できぬ。息子と遊ぶ。

-16-

アプリにファイルアクセス権限を付与したらできる?

-17-

apkファイルの作り方を調べる。
忘れないようにメモ。

apkファイル作成

https://github.com/kakisoft/PracticeCsharp/blob/master/memo/Xamarin/apk%E3%83%95%E3%82%A1%E3%82%A4%E3%83%AB%E4%BD%9C%E6%88%90.md

ストレージのアクセス許可

https://github.com/kakisoft/PracticeCsharp/blob/master/memo/Xamarin/%E3%82%B9%E3%83%88%E3%83%AC%E3%83%BC%E3%82%B8%E3%81%AE%E3%82%A2%E3%82%AF%E3%82%BB%E3%82%B9%E8%A8%B1%E5%8F%AF.md

-18-

起動しねぇ・・・
原因を探る気力は無いんで風呂に入る。

-19-

フォルダにアクセスできないのが原因なら、保存さえしなければ、最低限カメラの起動はできるのでは?     TakePhotoAsync の引数に StoreCameraMediaOptions のインスタンスを渡しているけど、プロパティを「SaveToAlbum = false」に変えたら行ける?

-20-

できぬ。
同じエラーメッセージ。

-21-

てんてけてんてんてん
そ~れ ぴんぴきぴんぴんぴん

-22-

Xamarin難しいいいいいい!!!!!!
これを「簡単」と言い切ってしまう Xamarinユーザは、スーパーサイヤ人ゴッド級の戦闘力を持ったIT戦士に思えてならないZE.
平凡な戦闘力しか持たない自分が立ち向かっていい相手ではなかったかもしんない。

-23-

もう疲れたんで、ずっと放置していたファイアーエムブレムでも起動しよう。
明日、もうちょっとやってみて、天使が舞い降りてこなかったら Kotlinやる。

-24-

放置期間長すぎて、ストーリーを完全に忘れてるんで、最初からプレイし直そう。
白夜王国編の主人公の名前は「スイフト」で、暗夜王国編の主人公の名前を「コトリン」にした。