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

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

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

C#はマルチパラダイムプログラミング言語の1つで、命令形・宣言型・関数型・ジェネリック型・コンポーネント指向・オブジェクティブ指向のプログラミング開発すべてに対応しています。

Android

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

Xamarin

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

Q&A

解決済

3回答

4984閲覧

Xamarin.Forms を用いてAndroid端末の音声を流したいが、[ファイル名]の定義がないとエラーがでる。

退会済みユーザー

退会済みユーザー

総合スコア0

C#

C#はマルチパラダイムプログラミング言語の1つで、命令形・宣言型・関数型・ジェネリック型・コンポーネント指向・オブジェクティブ指向のプログラミング開発すべてに対応しています。

Android

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

Xamarin

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

0グッド

0クリップ

投稿2016/09/22 12:46

編集2016/09/22 12:47

###前提・実現したいこと
Xamarin.Formsを使って音声がなるプログラムを書いています。
そこでAndroid端末では、DependencyServiceMediaPlayerをつかって、
Resources/raw内のsound1.mp3ファイルを鳴らそうと考えています。

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

CS0117 'Resource.Raw' に 'sound1' の定義がありません

###該当のソースコード

C#

1using Android.Media; 2using App1.Droid; 3 4[assembly: Xamarin.Forms.Dependency(typeof(DoroSound))] 5namespace App1.Droid 6{ 7 class DoroSound : App1.ISound 8 { 9 MediaPlayer mediaplayer; 10 11 public void Play() 12 { 13 mediaplayer.Create(this, Android.Resource.Raw.sound1); 14 mediaplayer.Start(); 15 } 16 } 17}

###試したこと
sound1.mp3 のビルドアクションを AndroidResource にすればよい
とのご意見をいただいたので、試してみましたが変化ありませんでした。

###補足情報(言語/FW/ツール等のバージョンなど)
Visual Studio 2015
Android7.0
Xamarin.Forms最新版

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

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

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

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

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

amay077

2016/09/22 14:39

前段の質問でコメントすればよかったかもですが、この事象は Xamarin.Forms でなく、 Xamarin.Android で起きている事なので、 Xamarin.Android のプロジェクトを作成(Android -> アプリ -> Android App)して、試してみるとよいと思います。 おそらく同じ結果になると思いますが、質問も Xamarin,Android の〜 とした方が回答が付きやすいと思います。
guest

回答3

0

リソースの参照が間違っているかと思われます.

C#

1// 現在 2mediaplayer.Create(this, Android.Resource.Raw.sound1); 3 4// 修正後 5mediaplayer = MediaPlayer.Create(this, Resource.Raw.sound1);

修正前のものでは Resource.designer.cs で定義されている Resource の定義を読みに行くのではなく,システム定義の Resource を読みに行ってしまうので自分が追加したファイルの定義が存在しないのです.

修正後のものは完全修飾名も示すと今回の場合
App1.Droid.Resource.Raw.sound1
となり,自分で追加したものになります.

また MediaPlayer の Create メソッドは静的メソッドのため,
クラス名.メソッド名 の呼び出し方が正しいでしょう.そもそも Resource の問題以前にビルドが通らなくなるのではないかと思われます.

投稿2016/10/11 04:39

編集2016/10/11 05:12
yamachu

総合スコア191

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

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

退会済みユーザー

退会済みユーザー

2016/10/21 06:28 編集

回答ありがとうございます! 返信遅れました。 直前にまた別の質問をしていましたが、そこは無事解決できたのでその結果生まれた質問をここに書かせていただきます。 ご回答いただいた点を実際に試したところ、MainActivity以外から音を鳴らそうとしているからか、 MediaPlayer.Create()の第二引数がuri型になってしまい、実行することができません。 どのように対処するべきでしょうか?
guest

0

ベストアンサー

ソース上のthisの所をApplication.Contextにしたらコンパイルエラーがなくなりました。

皆さまご回答ありがとうございました。
これからもどうかよろしくお願いします。

投稿2016/10/22 12:07

退会済みユーザー

退会済みユーザー

総合スコア0

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

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

0

解答ではないので、申し訳ないのですが、
まずは、自動生成されるResource.designer.csにおいてsound1が定義されているかを確認されてはいかがでしょうか?

私のXamarin.AndroidでのXamarin Studioの経験だと、何が原因かよくわからないけど
Resources/rawに追加後、クリーンしてリビルドしてもうまく生成されない時があって、Xamarin.Studioを終了して、
再度ビルドすると生成(追加)されるってことがあったりはしました。

投稿2016/09/24 09:22

退会済みユーザー

退会済みユーザー

総合スコア0

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.50%

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

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

質問する

関連した質問