質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.50%
Visual Studio

Microsoft Visual StudioはMicrosoftによる統合開発環境(IDE)です。多種多様なプログラミング言語に対応しています。

Android

Androidは、Google社が開発したスマートフォンやタブレットなど携帯端末向けのプラットフォームです。 カーネル・ミドルウェア・ユーザーインターフェイス・ウェブブラウザ・電話帳などのアプリケーションやソフトウェアをひとつにまとめて構成。 カーネル・ライブラリ・ランタイムはほとんどがC言語/C++、アプリケーションなどはJavaSEのサブセットとAndroid環境で書かれています。

Xamarin

Xamarin(ザマリン)は、iPhoneなどのiOSやAndroidで動作し、C# 言語を用いてアプリを開発できるクロスプラットフォーム開発環境です。Xamarin Studioと C# 言語を用いて、 iOS と Android の両方の開発を行うことができます。

Q&A

解決済

1回答

913閲覧

xamarin android 読み込んだ動画の再生時間を取得したい

退会済みユーザー

退会済みユーザー

総合スコア0

Visual Studio

Microsoft Visual StudioはMicrosoftによる統合開発環境(IDE)です。多種多様なプログラミング言語に対応しています。

Android

Androidは、Google社が開発したスマートフォンやタブレットなど携帯端末向けのプラットフォームです。 カーネル・ミドルウェア・ユーザーインターフェイス・ウェブブラウザ・電話帳などのアプリケーションやソフトウェアをひとつにまとめて構成。 カーネル・ライブラリ・ランタイムはほとんどがC言語/C++、アプリケーションなどはJavaSEのサブセットとAndroid環境で書かれています。

Xamarin

Xamarin(ザマリン)は、iPhoneなどのiOSやAndroidで動作し、C# 言語を用いてアプリを開発できるクロスプラットフォーム開発環境です。Xamarin Studioと C# 言語を用いて、 iOS と Android の両方の開発を行うことができます。

0グッド

0クリップ

投稿2020/06/23 09:40

前提・実現したいこと

動画の再生時間を取得するandroidアプリを作りたいのですがエラーが出ます。

発生している問題・エラーメッセージ

エラー CS0117 'Resource.Drawable' に 'file' の定義がありません

C#

using Android.App; using Android.OS; using Android.Support.V7.App; using Android.Runtime; using Android.Widget; using Android.Views; //using android_app_2; namespace sample_for_xamarinvideo { [Activity(Label = "@string/app_name", Theme = "@style/AppTheme", MainLauncher = true)] public class MainActivity : AppCompatActivity { VideoView videoView; TextView textview; protected override void OnCreate(Bundle savedInstanceState) { base.OnCreate(savedInstanceState); Xamarin.Essentials.Platform.Init(this, savedInstanceState); // Set our view from the "main" layout resource SetContentView(Resource.Layout.activity_main); // VideoViewのオブジェクトを取得して再生を開始 videoView = FindViewById<VideoView>(Resource.Id.videoview); // >> video のファイルを Resource > Drawableフォルダに入れて,fileをファイル名に書き換える<< *************************下でエラー************************* videoView.SetVideoPath($"android.resource://" + PackageName + "/" + Resource.Drawable.file); //MediaController mediaController = new MediaController(this); //mediaController.SetAnchorView(videoView); //videoView.Visibility = ViewStates.Visible; //videoView.SetMediaController(mediaController); videoView.Touch += VideoView_Touch; videoView.Start(); textview = FindViewById<TextView>(Resource.Id.txtMsg); new System.Threading.Thread( new System.Threading.ThreadStart(delegate () { while (true) { System.Threading.Thread.Sleep(100); RunOnUiThread(() => textview.Text = videoView.CurrentPosition.ToString()); // ここでビデオの再生時間に応じた処理 } }) ).Start(); } private void VideoView_Touch(object sender, View.TouchEventArgs e) { x_posi = e.Event.GetX(); y_posi = e.Event.GetY(); // ビデオにクリックしたときの処理 textview.SetX(x_posi); textview.SetY(y_posi); Toast.MakeText(this, "X:" + x_posi + " Y:" + y_posi + " " + videoView.CurrentPosition.ToString(), ToastLength.Long).Show(); } float x_posi = 0; float y_posi = 0; public override void OnRequestPermissionsResult(int requestCode, string[] permissions, [GeneratedEnum] Android.Content.PM.Permission[] grantResults) { Xamarin.Essentials.Platform.OnRequestPermissionsResult(requestCode, permissions, grantResults); base.OnRequestPermissionsResult(requestCode, permissions, grantResults); } } }

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

下記、公式の実装例を確認してみましょう。
アプリケーション リソース ビデオの読み込み

試してないですが、おそらく下記のように設定すればよいのではないでしょうか。

C#

1var uri = $"android.resource://{PackageName}/raw/{拡張子なしファイル名}"; 2videoView.SetVideoURI(Android.Net.Uri.Parse(uri));

Microsoftのページで、動画はrawフォルダへとの説明があったため、変更しました。
下記のサンプルソースで試してみるのも良いと思います。
Xamarin.Forms - Video Player Demos

投稿2020/06/23 11:34

編集2020/06/24 04:51
takapi_cs

総合スコア349

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

退会済みユーザー

退会済みユーザー

2020/06/24 03:16

回答に対するコメントとは少しずれてしまうのですがdrawableに動画ファイルを追加しようとすると指定されたパスが見つかりませんと出てくるのですが、これの解決策はありますか?
takapi_cs

2020/06/24 05:02

回答を一部修正しました。 動画ファイルの追加は私の環境では問題なくできたので、何故なのかはちょっとわかりません。。。 ちなみに、Resourceファイル名は日本語が使えないのでご注意を。
退会済みユーザー

退会済みユーザー

2020/06/25 00:12

できました! ありがとうございます!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.50%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問