From 12634496be8d78f09755f831a3b92919af0fc31e Mon Sep 17 00:00:00 2001 From: Anirudh Dewani Date: Tue, 20 Sep 2011 21:16:55 +0530 Subject: [PATCH] WiFiDirectDemo Change-Id: I9ea5020a39f02fd2ba4934397fa9a2ea79f781b4 --- build/sdk.atree | 1 + samples/WiFiDirectDemo/Android.mk | 16 + samples/WiFiDirectDemo/AndroidManifest.xml | 36 +++ samples/WiFiDirectDemo/_index.html | 49 +++ samples/WiFiDirectDemo/assets/sample_file.txt | 3 + .../res/drawable-hdpi/ic_action_discover.png | Bin 0 -> 1425 bytes .../res/drawable-hdpi/ic_action_on_off.png | Bin 0 -> 1422 bytes .../res/drawable-hdpi/ic_launcher.png | Bin 0 -> 5919 bytes .../WiFiDirectDemo/res/drawable-hdpi/icon.png | Bin 0 -> 4147 bytes .../res/drawable-ldpi/ic_action_discover.png | Bin 0 -> 484 bytes .../res/drawable-ldpi/ic_action_on_off.png | Bin 0 -> 486 bytes .../res/drawable-ldpi/ic_launcher.png | Bin 0 -> 2100 bytes .../WiFiDirectDemo/res/drawable-ldpi/icon.png | Bin 0 -> 1723 bytes .../res/drawable-mdpi/ic_action_discover.png | Bin 0 -> 583 bytes .../res/drawable-mdpi/ic_action_on_off.png | Bin 0 -> 646 bytes .../res/drawable-mdpi/ic_launcher.png | Bin 0 -> 3248 bytes .../WiFiDirectDemo/res/drawable-mdpi/icon.png | Bin 0 -> 2574 bytes .../res/drawable-xhdpi/ic_action_discover.png | Bin 0 -> 2036 bytes .../res/drawable-xhdpi/ic_action_on_off.png | Bin 0 -> 2495 bytes .../res/drawable-xhdpi/ic_launcher.png | Bin 0 -> 9016 bytes .../res/drawable/details_view.xml | 15 + .../WiFiDirectDemo/res/drawable/machine.png | Bin 0 -> 3878 bytes .../res/drawable/section_header.xml | 16 + .../WiFiDirectDemo/res/layout-land/main.xml | 27 ++ .../WiFiDirectDemo/res/layout-large/main.xml | 18 ++ .../res/layout/device_detail.xml | 70 +++++ .../WiFiDirectDemo/res/layout/device_list.xml | 80 +++++ samples/WiFiDirectDemo/res/layout/main.xml | 27 ++ .../WiFiDirectDemo/res/layout/row_devices.xml | 33 ++ .../WiFiDirectDemo/res/menu/action_items.xml | 15 + samples/WiFiDirectDemo/res/values/colors.xml | 5 + samples/WiFiDirectDemo/res/values/dimens.xml | 21 ++ samples/WiFiDirectDemo/res/values/strings.xml | 18 ++ .../wifidirect/DeviceDetailFragment.java | 295 ++++++++++++++++++ .../wifidirect/DeviceListFragment.java | 207 ++++++++++++ .../wifidirect/FileTransferService.java | 86 +++++ .../wifidirect/WiFiDirectActivity.java | 266 ++++++++++++++++ .../WiFiDirectBroadcastReceiver.java | 111 +++++++ 38 files changed, 1415 insertions(+) create mode 100644 samples/WiFiDirectDemo/Android.mk create mode 100644 samples/WiFiDirectDemo/AndroidManifest.xml create mode 100644 samples/WiFiDirectDemo/_index.html create mode 100644 samples/WiFiDirectDemo/assets/sample_file.txt create mode 100644 samples/WiFiDirectDemo/res/drawable-hdpi/ic_action_discover.png create mode 100644 samples/WiFiDirectDemo/res/drawable-hdpi/ic_action_on_off.png create mode 100644 samples/WiFiDirectDemo/res/drawable-hdpi/ic_launcher.png create mode 100644 samples/WiFiDirectDemo/res/drawable-hdpi/icon.png create mode 100644 samples/WiFiDirectDemo/res/drawable-ldpi/ic_action_discover.png create mode 100644 samples/WiFiDirectDemo/res/drawable-ldpi/ic_action_on_off.png create mode 100644 samples/WiFiDirectDemo/res/drawable-ldpi/ic_launcher.png create mode 100644 samples/WiFiDirectDemo/res/drawable-ldpi/icon.png create mode 100644 samples/WiFiDirectDemo/res/drawable-mdpi/ic_action_discover.png create mode 100644 samples/WiFiDirectDemo/res/drawable-mdpi/ic_action_on_off.png create mode 100644 samples/WiFiDirectDemo/res/drawable-mdpi/ic_launcher.png create mode 100644 samples/WiFiDirectDemo/res/drawable-mdpi/icon.png create mode 100644 samples/WiFiDirectDemo/res/drawable-xhdpi/ic_action_discover.png create mode 100644 samples/WiFiDirectDemo/res/drawable-xhdpi/ic_action_on_off.png create mode 100644 samples/WiFiDirectDemo/res/drawable-xhdpi/ic_launcher.png create mode 100644 samples/WiFiDirectDemo/res/drawable/details_view.xml create mode 100644 samples/WiFiDirectDemo/res/drawable/machine.png create mode 100644 samples/WiFiDirectDemo/res/drawable/section_header.xml create mode 100644 samples/WiFiDirectDemo/res/layout-land/main.xml create mode 100644 samples/WiFiDirectDemo/res/layout-large/main.xml create mode 100644 samples/WiFiDirectDemo/res/layout/device_detail.xml create mode 100644 samples/WiFiDirectDemo/res/layout/device_list.xml create mode 100644 samples/WiFiDirectDemo/res/layout/main.xml create mode 100644 samples/WiFiDirectDemo/res/layout/row_devices.xml create mode 100644 samples/WiFiDirectDemo/res/menu/action_items.xml create mode 100644 samples/WiFiDirectDemo/res/values/colors.xml create mode 100644 samples/WiFiDirectDemo/res/values/dimens.xml create mode 100644 samples/WiFiDirectDemo/res/values/strings.xml create mode 100644 samples/WiFiDirectDemo/src/com/example/android/wifidirect/DeviceDetailFragment.java create mode 100644 samples/WiFiDirectDemo/src/com/example/android/wifidirect/DeviceListFragment.java create mode 100644 samples/WiFiDirectDemo/src/com/example/android/wifidirect/FileTransferService.java create mode 100644 samples/WiFiDirectDemo/src/com/example/android/wifidirect/WiFiDirectActivity.java create mode 100644 samples/WiFiDirectDemo/src/com/example/android/wifidirect/WiFiDirectBroadcastReceiver.java diff --git a/build/sdk.atree b/build/sdk.atree index 7e0c2a5fa..9e925357a 100644 --- a/build/sdk.atree +++ b/build/sdk.atree @@ -179,6 +179,7 @@ development/samples/VoiceRecognitionService samples/${PLATFORM_NAME}/VoiceRec development/samples/VoicemailProviderDemo samples/${PLATFORM_NAME}/VoicemailProviderDemo development/samples/WeatherListWidget samples/${PLATFORM_NAME}/WeatherListWidget development/apps/WidgetPreview samples/${PLATFORM_NAME}/WidgetPreview +development/samples/WiFiDirectDemo samples/${PLATFORM_NAME}/WiFiDirectDemo development/samples/Wiktionary samples/${PLATFORM_NAME}/Wiktionary development/samples/WiktionarySimple samples/${PLATFORM_NAME}/WiktionarySimple development/samples/XmlAdapters samples/${PLATFORM_NAME}/XmlAdapters diff --git a/samples/WiFiDirectDemo/Android.mk b/samples/WiFiDirectDemo/Android.mk new file mode 100644 index 000000000..f77bb85d0 --- /dev/null +++ b/samples/WiFiDirectDemo/Android.mk @@ -0,0 +1,16 @@ +LOCAL_PATH:= $(call my-dir) +include $(CLEAR_VARS) + +LOCAL_MODULE_TAGS := samples + +# Only compile source java files in this apk. +LOCAL_SRC_FILES := $(call all-java-files-under, src) + +LOCAL_PACKAGE_NAME := WiFiDirectDemo + +LOCAL_SDK_VERSION := current + +include $(BUILD_PACKAGE) + +# Use the following include to make our test apk. +include $(call all-makefiles-under,$(LOCAL_PATH)) diff --git a/samples/WiFiDirectDemo/AndroidManifest.xml b/samples/WiFiDirectDemo/AndroidManifest.xml new file mode 100644 index 000000000..993716f1b --- /dev/null +++ b/samples/WiFiDirectDemo/AndroidManifest.xml @@ -0,0 +1,36 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/samples/WiFiDirectDemo/_index.html b/samples/WiFiDirectDemo/_index.html new file mode 100644 index 000000000..07fb19069 --- /dev/null +++ b/samples/WiFiDirectDemo/_index.html @@ -0,0 +1,49 @@ +

This is a demo application highlighting how to make peer to peer network connections with +the Wi-Fi Direct APIs. The application allows you to transfer jpeg images from the gallery after a succesful connection.

+ +

The source code for this demo app shows how to accomplish three key things +with Wi-Fi Direct APIs: Discovering peers, connecting using Wi-Fi Direct APIs, and finding group details post connection, so that a +TCP socket can be opened to transfer files.

+ +

The application includes:

+

+

If you are developing an application that uses the Wi-Fi Direct APIs, remember that the +feature is supported only on Android 4.0 (API level 14) and higher versions of +the platform. To ensure that your application can only +be installed on devices that are capable of supporting Wi-Fi Direct mode, remember to add the +following to the application's manifest before publishing to Android Market:

+

To control how Android Market filters your application +from devices that do not support Wi-Fi Direct mode, remember to add the following to the +application's manifest

+

For more information about using the Wi-Fi Direct API, see the android.net.wifi.p2p +documentation.

+ + + diff --git a/samples/WiFiDirectDemo/assets/sample_file.txt b/samples/WiFiDirectDemo/assets/sample_file.txt new file mode 100644 index 000000000..504dbf5d6 --- /dev/null +++ b/samples/WiFiDirectDemo/assets/sample_file.txt @@ -0,0 +1,3 @@ +This is a sample text file for wifi_direct demo. + +Once the devices are connected, the server i.e. groupOwner will listen for incoming connections and write this file. \ No newline at end of file diff --git a/samples/WiFiDirectDemo/res/drawable-hdpi/ic_action_discover.png b/samples/WiFiDirectDemo/res/drawable-hdpi/ic_action_discover.png new file mode 100644 index 0000000000000000000000000000000000000000..98241d76fdc582d626557d5c75468fd6e86a938e GIT binary patch literal 1425 zcmV;C1#bF@P)+9+H^kArCxP*G^bx}XsipMp!>HL)|v#OnVS&XGGa=ia$@X0kyKe9X+b_k8F3f7|)K zGn+SU@UeM=%fIO~fVH+@xfZAr0O-s-Aphw1lA#sFSPB3u^f{6&F4`)p^?*S5InmFe zzeI~G2_^~vw0y4U0?|dHEp>Hu^~1x%kGoXd(b4gc=6@9ZYCeB6U@B^numH~1t`~~7 zi>{cSo_;op6asUX-v8WKWucO;6$SvpUo6@=H8u5ORaF(P6M6LX^c+}RT>MH4XN^^| zk(oFa6a!#|-zBZTT!{^3jXT8W6VWds;-#z+1OT5WK$8;wwX$~cEY4=L>F)0CW=(x5 z`nz1dK>*GZ^Br=V_vAJNZ^1aF(b?H~z-ZID#98{iO`s3^2`4K&sAunseh`)AN`3%H zmH7QFegSK;%-2Q;(k6MI!CKPlWuk;15Ut;@=O2rH7o95A5`F;C_zrD;+{IX%->dmg zMdW%{RsjUTzD;zE_`H_|VW0srFkDXGKZF4*&<$b=vsNe6B|GnE(3_8Zu+Wn)WqfdAN7@xmEb2AY(C6=xdfTIp&kdc`GQ}k~s zCU61pbsuT0O`E(c;)Jz6Uu@rHg^2d%TVZl?a$sg=<^^NTu>5lNa{)kODQ)(SLu0pl zG*(P-@ALEZW4Cy|?%>}|(pw`%TK1oyElP>LVVy?XXh2|Sm1 zuNHtB1K=%(QdR^&C0z(5QNi9QtG?<0kTfoosgw%^1u=P>*oYFuoXp#so0}hQYioPN zD`a0^-=RzW z$3*q*?d?OUREpC(XGj@kxev^ON{K6_HENZDQKXcBCvHRFUMfQS1%;hC(WAO!fhJLsZf!9Ap8W1=cZED5FV= zI?7@I#9CTf_O-UQ4!Q*QtUILd)Kou-DCSrnxxp#ck#PVu$_gA_6(0hBP)untY52)R zd`9XIiUFXG*&=G1n3y;ci^a(26(0)=3v<1_y$^^n+09xc)IP-kz=VLT6J0K%L5XxD z5lRZwp3P>|YTmD}^ckT+gaLpI_D%>OiNV3aM-z#}zA(a>7$H!%3jC8nYnGOlvRz$W zq}$KJf(Q%1?u#{O7wNPB6K`l}XdD9LAmQ(@TLdQ7(XDa(JHu6t`;{8yh=PQ&YqDFd*y&0)btSVpkIY!Y^h z`-p9WX#kN` fR^bI3-U9yt-`&eVRr5|l00000NkvXXu0mjfly#w> literal 0 HcmV?d00001 diff --git a/samples/WiFiDirectDemo/res/drawable-hdpi/ic_action_on_off.png b/samples/WiFiDirectDemo/res/drawable-hdpi/ic_action_on_off.png new file mode 100644 index 0000000000000000000000000000000000000000..5eabf08d37412b55fc80dc65a41aba3e284483f8 GIT binary patch literal 1422 zcmV;91#$X`P)2(|@VMJP(!&&h|7Xe6bOKw z=FAQqGQh{s0j~d$K>+`^2m8YV!v(6y0lTl~LlM6*?uqy-j+Rlmqdnp0`6l?&b?9UjQgSQ8dFnN9j4Gt*vc8Ca$Qccpd;vO-+Z3i;E}e`)m5% zCHhD7m*^Mw%-Jis0ALP8XcUX)N#Vty0B$UNc#AXHF# zq+5vR0x5XHykdw^0N3m56%igl*59IAB0|eF;s9WQ$)Z`6m6coC+uKj|^z^XETmjf) zS}l!90JiC;A4DS>8yk1l)zwuvkNoPq;uUKJfb!FvwU2nE=D{FP8#JAeylw$u0l-F` zBw83ZRHRHDSTwIO4kpceLHw6QZ1}7j+ya2OFOd@8$58@aDYDi9_$Y_DrJD1j&kH^P z!zADd!l$I9+m3Y4ub*ImX0>I+9{ETH0r~Frr7v(bM3U|f>lJT4sgsZ78 zYR(-ifbn8nrUg#=07y7t^QE)=vzl`#+Z^$~qW51rPY|NsaB?Nb7n*a!0)Ud3SX~`d zl^%sw>OJupY5DZ|Ax})z8mA3LdR;u9h}c`)DISkZAw;ppv4_jD4k?0QEHhF3c)>h0 zcZrzU6L|Vj`Ry@OO7A(Ad+mcv0LF-Ek%WTSCzO;=HAzYRv5!CeUI5nUJEe5F<{tOW z6+ef`1yQek5CveVgnHAzD;2N`9`o|20iet<&vk2&33l&0m%#iE983KZG7LAn&qQ2qdX*8`0PqeAQktQe14 zGM17dkP(u#OrHtQK9#5s0A9di)G8mQ3ogWWd31}``8>+{J^;LDFU*#pcT=g+9<)C6Mc8;?3PaQNoFT zU??@XLVl100>%5QlEdZZXHmEv;}vfWp|GH!-AKo7riea|xosF07XX0{gubb;pl(OO|BImSlO8<#=}%CpIRb34{qtY3K~Jl!kT+%s`WozFh_y4>1J+H1FzgjFr`X$G6 z-n*ZB&;L2++(kBfjb20GH3VKm;QtSSqE~rppO3TJaxmRx~_l{%@cgHoyq0HaJ?x^?T;cP(DL_~x>* zvTG_UD>oL27A;z|N^SIqCWeNF&RiA^4i2`Bj*cGd@9%%+(4j-$Q`?w$R19e3Q?M2s zsD%c|tpG&<1whJ{ELl?5)YSAIf$~n}cP(GOd~tn!y(w=3$OM!X7dti@A)1(&Facu% z%DTF`?Bd0XcK-bN{_gJXJp${89UUDHD1S*^0Sk7p0BOO1S}1@D0aLMN&6?YnE?xRp zjg5^v#AOZ&VD$9#*riLCg5so7)?_Wx%>rnES65eO%a$z*X>Dz70F7}1%3gWpl~JYp zHTKKx?d?x!*syrPf%;_u^6|J2TrRFyv0}vzS<7cvu3Y)14I4Jts#U9OY;4TVo;_

bLY-I+1uOuMWy>C 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 BsQv%| literal 0 HcmV?d00001 diff --git a/samples/WiFiDirectDemo/res/drawable-hdpi/icon.png b/samples/WiFiDirectDemo/res/drawable-hdpi/icon.png new file mode 100644 index 0000000000000000000000000000000000000000..8074c4c571b8cd19e27f4ee5545df367420686d7 GIT binary patch literal 4147 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 literal 0 HcmV?d00001 diff --git a/samples/WiFiDirectDemo/res/drawable-ldpi/ic_action_discover.png b/samples/WiFiDirectDemo/res/drawable-ldpi/ic_action_discover.png new file mode 100644 index 0000000000000000000000000000000000000000..12849eddb70eafe6a66bb61cb989ffb3606b3f29 GIT binary patch literal 484 zcmV0b_bxE_oP}N0yO+JvZgRxH^zpphH0FUXo-1P?HT%!zmo$E85f3^N5$1 zmxF8zpc-*`9o+}wK=q(_!U`yggZuaIU+U=Su!SZ9f);=xPz@Ll*I_E55e>_^;0%bC z%2a@2_kb8@hC|P2yyfNP2bGkR43VAl?c2AXTwGl2=uQMWKnEJZIExQ-3qX86Q&UsR zl$4b1xWW~SML6>VuELH5Xoxa;kpT_!AfOxvQ0@w{MYu8@DWxeWoPPi@sE`vzFH)c> z55p(q)(1EXMRcE#YXQi?_$-0vAxbR3X$jC5RI>oX5^4q!aw3A&f*>)JJV9v?5zHzy aw*UZ!Gr1Xeg`QFX0000@P)%)0+NCc<=qKbCT;~U}4MIL4pAbqn`JcK`L3|)C1vOGMn;69EJu*`! z(>t0Gg9Afpa&yjooqM~TmQS~3{7w@B*sRc9qB|81t#Ya|>2JkB|A0yz*VVk4sWJw0VQ0leQujtv9=Kn+X|phnkf6gt5MeSD{b z3(pZcx&{Yb<#4qj+Z}p$D@jy>q%6zVD2g^k(Q7*B5y&Iw zy{U^pZir%?a2|lAM$jkYdxl_0&(91s8IDGyQ^#>?sV3sTBS_Qq#C2UX$Nbn5uxS9A zZHn0bw=J?Dp6fx)olyf)U`l^~rNmI+nig~&7*!0wJkO_9Rh5Im0By(~UCo@5t>=(r z;^xu63_CbvHBn8IR2Q0_Q@InMaMSQZK{5ES=@xduPXv-sT|TN4SeZs(Y1m|Cni{6j c^VSJI0e{-b83LAJx&QzG07*qoM6N<$f=F7*(f|Me literal 0 HcmV?d00001 diff --git a/samples/WiFiDirectDemo/res/drawable-ldpi/ic_launcher.png b/samples/WiFiDirectDemo/res/drawable-ldpi/ic_launcher.png new file mode 100644 index 0000000000000000000000000000000000000000..002dae280517b74ffa974711f4527356c9beb3e3 GIT binary patch literal 2100 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 literal 0 HcmV?d00001 diff --git a/samples/WiFiDirectDemo/res/drawable-mdpi/ic_launcher.png b/samples/WiFiDirectDemo/res/drawable-mdpi/ic_launcher.png new file mode 100644 index 0000000000000000000000000000000000000000..c3792d05aaff60b8c3436363cfa599b0b85ade1b GIT binary patch literal 3248 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 e{mgq!>Hi0{8yweU7p#o{0000 + + + + + + diff --git a/samples/WiFiDirectDemo/res/drawable/machine.png b/samples/WiFiDirectDemo/res/drawable/machine.png new file mode 100644 index 0000000000000000000000000000000000000000..d61609ae631742404d516b8e70494af0e64f6b01 GIT binary patch literal 3878 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 literal 0 HcmV?d00001 diff --git a/samples/WiFiDirectDemo/res/drawable/section_header.xml b/samples/WiFiDirectDemo/res/drawable/section_header.xml new file mode 100644 index 000000000..22344dc81 --- /dev/null +++ b/samples/WiFiDirectDemo/res/drawable/section_header.xml @@ -0,0 +1,16 @@ + + + + + + + diff --git a/samples/WiFiDirectDemo/res/layout-land/main.xml b/samples/WiFiDirectDemo/res/layout-land/main.xml new file mode 100644 index 000000000..55b0d09c2 --- /dev/null +++ b/samples/WiFiDirectDemo/res/layout-land/main.xml @@ -0,0 +1,27 @@ + + + + + + + + + + + diff --git a/samples/WiFiDirectDemo/res/layout-large/main.xml b/samples/WiFiDirectDemo/res/layout-large/main.xml new file mode 100644 index 000000000..b278d6443 --- /dev/null +++ b/samples/WiFiDirectDemo/res/layout-large/main.xml @@ -0,0 +1,18 @@ + + + + + + + + + + + diff --git a/samples/WiFiDirectDemo/res/layout/device_detail.xml b/samples/WiFiDirectDemo/res/layout/device_detail.xml new file mode 100644 index 000000000..40509b130 --- /dev/null +++ b/samples/WiFiDirectDemo/res/layout/device_detail.xml @@ -0,0 +1,70 @@ + + + + +