Wi-Fi-Directについて教えてください

904 views
Skip to first unread message

あさひ

unread,
Sep 3, 2013, 6:36:44 PM9/3/13
to android-g...@googlegroups.com
あさひと申します。
Androidアプリは始めて間もない初心者なので、勉強中の身です。

現在は、Android SDKのサンプルプログラムである、WiFiDirectDemoを使って、WiFiDirectについて勉強しています。
このサンプルアプリでは、接続した相手に画像を転送するようになっています。
以下は、ファイル選択と転送を行っていると思われるコードです。

//ボタンを押したら、ギャラリーや他のアプリから画像を選択
mContentView.findViewById(R.id.btn_start_client).setOnClickListener(
                new View.OnClickListener() {
                    public void onClick(View v) {
 Intent intent = new Intent(Intent.ACTION_GET_CONTENT);
                        intent.setType("image/*");
                        startActivityForResult(intent, CHOOSE_FILE_RESULT_CODE);
                   }
                });

//FileTransferServiceを使用してグループのオーナーに転送
public void onActivityResult(int requestCode, int resultCode, Intent data) {
 Uri uri = data.getData();
        TextView statusText = (TextView) mContentView.findViewById(R.id.status_text);
        statusText.setText("Sending: " + uri);
        Log.d(WiFiDirectActivity.TAG, "Intent----------- " + uri);
        Intent serviceIntent = new Intent(getActivity(), FileTransferService.class);
        serviceIntent.setAction(FileTransferService.ACTION_SEND_FILE);
        serviceIntent.putExtra(FileTransferService.EXTRAS_FILE_PATH, uri.toString());
        serviceIntent.putExtra(FileTransferService.EXTRAS_GROUP_OWNER_ADDRESS,
                info.groupOwnerAddress.getHostAddress());
        serviceIntent.putExtra(FileTransferService.EXTRAS_GROUP_OWNER_PORT, 8988);
        getActivity().startService(serviceIntent);
 }

このサンプルでは、転送するファイルが「画像」となっていますが、画像以外のファイル(文字列などのテキストファイルなど)を
相手に転送するには、このプログラムの場合、どのようにすれば画像ファイル以外のデータを送ることが出来るのでしょうか?

初心者なので、質問のしかたや内容などで不鮮明な部分があるかもしれませんが、
どなたかわかる方がいましたら、ご教授お願いします。

awwa

unread,
Sep 3, 2013, 7:56:09 PM9/3/13
to android-g...@googlegroups.com

あわと申します。

このコードではonActivityResult()内で送信したいファイルのuriを指定して送信しています。
画像以外のファイルも同様にそのファイルのuriを指定すれば送れるはずです。
uriはファイルが格納されている場所によってきまります。

問題はユーザにファイルを選択させるケースです。
画像以外のファイルについては汎用的なファイル選択のためのUIをフレームワーク側が用意していない(少なくとも私は聞いたことがありません)ので自前でUIを作るかファイル選択のためのUIを持った他のアプリケーションと連携するなどしてなんとかするしかないと思います。

では。

2013/09/04 8:32 "あさひ" <aoki.m...@gmail.com>:
--
このメールは Google グループのグループ「日本Androidの会」の登録者に送られています。
このグループから退会し、メールの受信を停止するには、android-group-j...@googlegroups.com にメールを送信します。
このグループに投稿するには、android-g...@googlegroups.com にメールを送信してください。
http://groups.google.com/group/android-group-japan からこのグループにアクセスしてください。
その他のオプションについては、https://groups.google.com/groups/opt_out にアクセスしてください。

あさひ

unread,
Sep 5, 2013, 7:47:48 AM9/5/13
to android-g...@googlegroups.com
こんばんは、あさひです。
あわ様、アドバイスありがとうございます。

転送するファイルについてですが、例えば、自分の端末の情報(端末のステータスや詳細)など、そのアプリ(WiFiDIrectDemo)内で
取得したデータの場合は、URIの指定は可能でしょうか?
URIは、私が勉強した範囲では
/external/images/media/・・・
といったように、ファイルの指定(?)をしているようなのですが、上記のように
例えば、WiFiDirectDemoアプリ内で自分のIPアドレスなどを取得して相手に送信→表示(相手)
といったようなことはできますでしょうか?

まだ、作るアプリについてはこれといった目的は無いので、いろいろ試している段階です。
質問ばかりで申し訳ないのですが、よろしくお願い致します。


2013年9月4日水曜日 8時56分09秒 UTC+9 awwa:

あわと申します。

このコードではonActivityResult()内で送信したいファイルのuriを指定して送信しています。
画像以外のファイルも同様にそのファイルのuriを指定すれば送れるはずです。
uriはファイルが格納されている場所によってきまります。

問題はユーザにファイルを選択させるケースです。
画像以外のファイルについては汎用的なファイル選択のためのUIをフレームワーク側が用意していない(少なくとも私は聞いたことがありません)ので自前でUIを作るかファイル選択のためのUIを持った他のアプリケーションと連携するなどしてなんとかするしかないと思います。

では。

--
このメールは Google グループのグループ「日本Androidの会」の登録者に送られています。
このグループから退会し、メールの受信を停止するには、android-group-japan+unsubscribe@googlegroups.com にメールを送信します。
このグループに投稿するには、android-group-ja...@googlegroups.com にメールを送信してください。

awwa

unread,
Sep 5, 2013, 8:11:50 PM9/5/13
to android-g...@googlegroups.com

あわです。


前半のご質問に対して選択肢を2つ挙げます。

どちらでもやりたいことはできます。

1. 自前データ送信サービス

Uriに縛られずにデータ送信したければ、FileTransferServiceを真似して自前でデータ送信サービスを作ってしまえば可能です。

例えば送りたいデータそのものをIntentに乗せて、自前のデータ送信サービス内で、開いたsocketのstreamにそのデータを流しこむ、

といった感じです。

FileTransferServiceの中身を理解するのが早道です。


2. 意地でもUri

それが面倒なら、どんな情報も一旦ファイルとしてストレージ等に保存した上で、Uriを取得した上でFileTransferservice経由で送信します。


後半のご質問は、自端末のIPアドレスが取れるか?というご質問ですが、

WiFiであれば以下の方法で可能です。

http://techbooster.jpn.org/andriod/device/1376/

それ以上知りたければ、「Android IPアドレス 取得」でググってください。


では。


このグループから退会し、メールの受信を停止するには、android-group-j...@googlegroups.com にメールを送信します。
このグループに投稿するには、android-g...@googlegroups.com にメールを送信してください。

あさひ

unread,
Sep 8, 2013, 9:36:43 PM9/8/13
to android-g...@googlegroups.com
 こんにちは、あさひです。
あわ様、ご返信ありがとうございます。

このサンプルを基に発展させていこうと考えているので、
送りたいデータの自由度を高めるために自前の送信サービスを作る方がよさそうですね。
転送サービスの中身について勉強します。

IPアドレスについては貼って下さったWEBサイトを参考にし、取得することができました。
ご親切に教えて下さり、ありがとうございました。
Reply all
Reply to author
Forward
0 new messages