y-tomimoto / TAKITATE

sandbox for android tutorial
0 stars 1 forks source link

行ったご飯屋をSuggestする機能を実装する #13

Open y-tomimoto opened 3 years ago

y-tomimoto commented 3 years ago
y-tomimoto commented 3 years ago

1については行けそう。 2については、10分置きに位置情報を取得し、

  1. その前後で位置情報が変化していない & その半径5m以内に飲食店が存在する

場合、飯屋に滞在しているとする

y-tomimoto commented 3 years ago

これ

https://developers.google.com/places/web-service/search#FindPlaceRequests

The input can be any kind of Places text data, such as a name, address, or phone number 位置情報がどの形式で取得できるかによる。 geometry <=> 住所 にバックグラウンドで変更できれば行けそう。

y-tomimoto commented 3 years ago

位置情報を取得する場合。

https://developer.android.com/training/location/retrieve-current?hl=ja

location オブジェクトで位置情報を取得できる様子。

https://developer.android.com/reference/android/location/Location?hl=ja

y-tomimoto commented 3 years ago

PlaceAPIが緯度と経度で検索できるか?

https://stackoverflow.com/questions/44852679/google-places-api-getting-exact-place-from-longitude-and-latitude

参考: https://groups.google.com/g/google-maps-api-japan/c/Zfp1Ijphl50?pli=1

y-tomimoto commented 3 years ago

緯度経度 => 住所に変換するAPI

http://geoapi.heartrails.com/api.html

Androidのバックグラウンドで、getLastLocationにて緯度経度を取得し、 それをこのAPIに投げ、そのレスポンスをPlaceAPIに投げる。

GeoCode APIもあるけど、課金必要そう

https://www.nanchatte.com/map/getAddressByLatLng.html

Yahoo Map API ~良さそう~ これ住所投げてジオコード返すやつ。

https://developer.yahoo.co.jp/webapi/map/openlocalplatform/v1/geocoder.html

ジオコード投げて住所が欲しいとしたらこれかな。これ使えば、GoogleのGeoCodeAPI使わなくても良さそう。

http://geoapi.heartrails.com/api.html#geolocation

y-tomimoto commented 3 years ago

下記を用いて位置情報を取得する

https://developer.android.com/training/location/retrieve-current?hl=ja

y-tomimoto commented 3 years ago

位置情報を取得済み。 次にgeocodeから住所を取得する

y-tomimoto commented 3 years ago

丁目までしか返さない様子。 丁目まででどれだけ飲食店の情報を取得できるか、、、

y-tomimoto commented 3 years ago

これだけだと、丁目までが位置情報として帰ってくる。 細かい住所まで検索する必要がありそう。もしくは、丁目までで飲食店を検索するか?

y-tomimoto commented 3 years ago

やっぱ付近のRestaurantを検索結果として取得する場合はNearbyAPI(要課金)が必要かも。

y-tomimoto commented 3 years ago

これ見てみる。

https://webservice.recruit.co.jp/doc/hotpepper/reference.html

y-tomimoto commented 3 years ago

300m範囲を全て取得してしまうので、密集地帯だとsuggestする店がとても多くなる。 1stリリースはこれでsuggestを実行して、リクエスト数が読めてきたらNearby API に切り替える。

Place APIのうち Nearbyだと、m単位でspotを絞れる。

radius — Defines the distance (in meters) within which to return place results. The maximum allowed radius is 50 000 meters. Note that radius must not be included if rankby=distance (described under Optional parameters below) is specified.

y-tomimoto commented 3 years ago

あー、でも緯度経度が帰ってきてるから、 近い順にソートして、上位3件を返すとかでいけそう。

sample response

<?xml version="1.0" encoding="UTF-8" ?>
<results xmlns="http://webservice.recruit.co.jp/HotPepper/">
    <api_version>1.26</api_version>
    <results_available>3</results_available>
    <results_returned>3</results_returned>
    <results_start>1</results_start>
    <shop>
        <id>J001168332</id>
        <name>Dal Baffo</name>
        <logo_image>https://imgfp.hotp.jp/IMGH/29/73/P026662973/P026662973_69.jpg</logo_image>
        <name_kana>だるばっふぉ</name_kana>
        <address>東京都杉並区阿佐谷北3-10-13</address>
        <station_name>阿佐ケ谷</station_name>
        <ktai_coupon>1</ktai_coupon>
        <large_service_area>
            <code>SS10</code>
            <name>関東</name>
        </large_service_area>
        <service_area>
            <code>SA11</code>
            <name>東京</name>
        </service_area>
        <large_area>
            <code>Z011</code>
            <name>東京</name>
        </large_area>
        <middle_area>
            <code>Y060</code>
            <name>中野・高円寺・阿佐ヶ谷・方南町</name>
        </middle_area>
        <small_area>
            <code>X181</code>
            <name>阿佐ヶ谷</name>
        </small_area>
        <lat>35.7088025282</lat>
        <lng>139.6345660412</lng>
        <genre>
            <code>G006</code>
            <name>イタリアン・フレンチ</name>
            <catch>大人の隠れ家空間で本格イタリアンを楽しむ</catch>
        </genre>
        <budget>
            <code>B003</code>
            <name>3001~4000円</name>
            <average>3500円</average>
        </budget>
        <budget_memo></budget_memo>
        <catch></catch>
        <capacity>26</capacity>
        <access>阿佐ヶ谷駅北口をでで、バーガーキングの横を直進、モールを抜けたらラーメン屋さんの左の道を直進、徒歩5分して左手に</access>
        <mobile_access>阿佐ヶ谷駅北口、バーガーキングの横を直進、徒歩5分</mobile_access>
        <urls>
            <pc>https://www.hotpepper.jp/strJ001168332/?vos=nhppalsa000016</pc>
        </urls>
        <open>火~土、祝日、祝前日: 11:30~15:00 (料理L.O. 14:00)18:00~翌1:00 (料理L.O. 翌0:00)日: 11:30~15:00 (料理L.O. 14:00)18:00~23:00 (料理L.O. 22:00)</open>
        <close>月</close>
        <party_capacity></party_capacity>
        <wifi>あり</wifi>
        <other_memo>ご予約お待ちしております</other_memo>
        <shop_detail_memo>ご来店、お待ちしております♪</shop_detail_memo>
        <wedding></wedding>
        <free_drink>あり :各種コースに含まれております</free_drink>
        <free_food>なし :食べ放題コースはございません</free_food>
        <private_room>なし :個室はございません</private_room>
        <horigotatsu>なし :掘りごたつ席はございません</horigotatsu>
        <tatami>なし :お座敷席はございません</tatami>
        <card>利用可</card>
        <non_smoking>全面禁煙</non_smoking>
        <charter>貸切可 :人数に合わせてコース内容や金額、時間等も変更可能です。お気軽にご相談ください</charter>
        <parking>なし :お酒を飲まれる方は、お車でのご来店はご遠慮ください</parking>
        <barrier_free>なし :お手伝いが必要な方はお声掛けください</barrier_free>
        <show>なし</show>
        <karaoke>なし</karaoke>
        <band>不可</band>
        <tv>なし</tv>
        <english>なし</english>
        <pet>不可</pet>
        <child>お子様連れ歓迎 :アレルギー等ございましたら、お気軽にお申し付けください</child>
        <coupon_urls>
            <pc>https://www.hotpepper.jp/strJ001168332/map/?vos=nhppalsa000016</pc>
            <sp>https://www.hotpepper.jp/strJ001168332/scoupon/?vos=nhppalsa000016</sp>
        </coupon_urls>
        <course>あり</course>
        <photo>
            <pc>
                <l>https://imgfp.hotp.jp/IMGH/98/45/P028609845/P028609845_238.jpg</l>
                <m>https://imgfp.hotp.jp/IMGH/98/45/P028609845/P028609845_168.jpg</m>
                <s>https://imgfp.hotp.jp/IMGH/98/45/P028609845/P028609845_58_s.jpg</s>
            </pc>
            <mobile>
                <l>https://imgfp.hotp.jp/IMGH/98/45/P028609845/P028609845_168.jpg</l>
                <s>https://imgfp.hotp.jp/IMGH/98/45/P028609845/P028609845_100.jpg</s>
            </mobile>
        </photo>
        <lunch>あり</lunch>
        <midnight>営業している</midnight>
    </shop>
    <shop>
        <id>J001179559</id>
        <name>ワインバル 4986</name>
        <logo_image>https://imgfp.hotp.jp/SYS/cmn/images/common/diary/custom/m30_img_noimage.gif</logo_image>
        <name_kana>ワインバルヨクバル</name_kana>
        <address>東京都杉並区阿佐谷北2-37</address>
        <station_name>阿佐ケ谷</station_name>
        <ktai_coupon>1</ktai_coupon>
        <large_service_area>
            <code>SS10</code>
            <name>関東</name>
        </large_service_area>
        <service_area>
            <code>SA11</code>
            <name>東京</name>
        </service_area>
        <large_area>
            <code>Z011</code>
            <name>東京</name>
        </large_area>
        <middle_area>
            <code>Y060</code>
            <name>中野・高円寺・阿佐ヶ谷・方南町</name>
        </middle_area>
        <small_area>
            <code>X181</code>
            <name>阿佐ヶ谷</name>
        </small_area>
        <lat>35.7074685252</lat>
        <lng>139.6350649411</lng>
        <genre>
            <code>G006</code>
            <name>イタリアン・フレンチ</name>
            <catch>★人気のイタリアン★気軽によれる◎</catch>
        </genre>
        <budget>
            <code>B002</code>
            <name>2001~3000円</name>
            <average>3000円</average>
        </budget>
        <budget_memo>チャージ  300円</budget_memo>
        <catch>人気のメニューも楽しめる デートや仲間、お一人様も</catch>
        <capacity>19</capacity>
        <access>阿佐ヶ谷駅より徒歩3分</access>
        <mobile_access>阿佐ヶ谷駅より徒歩3分</mobile_access>
        <urls>
            <pc>https://www.hotpepper.jp/strJ001179559/?vos=nhppalsa000016</pc>
        </urls>
        <open>月、火、木~日、祝日、祝前日: 17:00~翌1:00 (料理L.O. 翌0:00 ドリンクL.O. 翌0:30)</open>
        <close>水</close>
        <party_capacity>20</party_capacity>
        <wifi>あり</wifi>
        <other_memo></other_memo>
        <shop_detail_memo></shop_detail_memo>
        <wedding>ご相談ください</wedding>
        <free_drink>あり :飲み放題のコースもご準備しております◎</free_drink>
        <free_food>なし :食べ放題はございませんので、お酒と合う一品をお楽しみください。</free_food>
        <private_room>なし :個室はございませんが、ワンフロアで貸切もできます</private_room>
        <horigotatsu>なし :掘りごたつはございませんが、ソファー席などゆったりとおくつろぎいただける空間です♪</horigotatsu>
        <tatami>なし :座敷はございませんが、広々とした空間でおくつろぎいただけます◎</tatami>
        <card>利用可</card>
        <non_smoking>一部禁煙</non_smoking>
        <charter>貸切可 :10名様から貸切できます♪宴会やパーティーに最適★</charter>
        <parking>なし :近隣のコインパーキングをご利用ください</parking>
        <barrier_free>なし :バリアフリーではないですが、事前にお申し付けいただければ、スタッフがご協力差し上げます。</barrier_free>
        <show>なし</show>
        <karaoke>なし</karaoke>
        <band>不可</band>
        <tv>なし</tv>
        <english>あり</english>
        <pet>不可</pet>
        <child>お子様連れOK :ご心配な場合は事前にご相談ください。</child>
        <coupon_urls>
            <pc>https://www.hotpepper.jp/strJ001179559/map/?vos=nhppalsa000016</pc>
            <sp>https://www.hotpepper.jp/strJ001179559/scoupon/?vos=nhppalsa000016</sp>
        </coupon_urls>
        <course>あり</course>
        <photo>
            <pc>
                <l>https://imgfp.hotp.jp/IMGH/15/54/P028091554/P028091554_238.jpg</l>
                <m>https://imgfp.hotp.jp/IMGH/15/54/P028091554/P028091554_168.jpg</m>
                <s>https://imgfp.hotp.jp/IMGH/15/54/P028091554/P028091554_58_s.jpg</s>
            </pc>
            <mobile>
                <l>https://imgfp.hotp.jp/IMGH/15/54/P028091554/P028091554_168.jpg</l>
                <s>https://imgfp.hotp.jp/IMGH/15/54/P028091554/P028091554_100.jpg</s>
            </mobile>
        </photo>
        <lunch>なし</lunch>
        <midnight>営業している</midnight>
    </shop>
    <shop>
        <id>J001251061</id>
        <name>とりや 鈴なり</name>
        <logo_image>https://imgfp.hotp.jp/IMGH/22/53/P036502253/P036502253_69.jpg</logo_image>
        <name_kana>とりやすずなり</name_kana>
        <address>東京都杉並区阿佐谷北1-27-5 2階</address>
        <station_name>阿佐ケ谷</station_name>
        <ktai_coupon>0</ktai_coupon>
        <large_service_area>
            <code>SS10</code>
            <name>関東</name>
        </large_service_area>
        <service_area>
            <code>SA11</code>
            <name>東京</name>
        </service_area>
        <large_area>
            <code>Z011</code>
            <name>東京</name>
        </large_area>
        <middle_area>
            <code>Y060</code>
            <name>中野・高円寺・阿佐ヶ谷・方南町</name>
        </middle_area>
        <small_area>
            <code>X181</code>
            <name>阿佐ヶ谷</name>
        </small_area>
        <lat>35.707373822</lat>
        <lng>139.6353760295</lng>
        <genre>
            <code>G004</code>
            <name>和食</name>
            <catch>全国各地の日本酒と焼き鳥が自慢のお店♪</catch>
        </genre>
        <budget>
            <code>B008</code>
            <name>4001~5000円</name>
            <average>4000円~5000円程度</average>
        </budget>
        <budget_memo>料金は税抜価格です。</budget_memo>
        <catch>駅から徒歩3分の好立地♪ 阿佐ヶ谷の穴場焼き鳥店</catch>
        <capacity>13</capacity>
        <access>JR中央線 阿佐ヶ谷駅北口から徒歩3分/地下鉄丸ノ内線 南阿佐ヶ谷駅から徒歩10分</access>
        <mobile_access>JR中央線 阿佐ヶ谷駅北口から徒歩3分</mobile_access>
        <urls>
            <pc>https://www.hotpepper.jp/strJ001251061/?vos=nhppalsa000016</pc>
        </urls>
        <open>月~土、祝前日: 18:00~翌0:00 (料理L.O. 23:00 ドリンクL.O. 23:00)</open>
        <close>日、祝日</close>
        <party_capacity>20</party_capacity>
        <wifi>なし</wifi>
        <other_memo></other_memo>
        <shop_detail_memo></shop_detail_memo>
        <wedding>お気軽にご相談ください。</wedding>
        <free_drink>なし</free_drink>
        <free_food>なし</free_food>
        <private_room>なし</private_room>
        <horigotatsu>なし</horigotatsu>
        <tatami>なし</tatami>
        <card>利用可</card>
        <non_smoking>全面禁煙</non_smoking>
        <charter>貸切可 :7名様~13名様程度/要相談</charter>
        <parking>なし :近くにコインパーキングあり</parking>
        <barrier_free>なし</barrier_free>
        <show>なし</show>
        <karaoke>なし</karaoke>
        <band>不可</band>
        <tv>なし</tv>
        <english>なし</english>
        <pet>不可</pet>
        <child>お子様連れOK</child>
        <coupon_urls>
            <pc>https://www.hotpepper.jp/strJ001251061/map/?vos=nhppalsa000016</pc>
            <sp>https://www.hotpepper.jp/strJ001251061/scoupon/?vos=nhppalsa000016</sp>
        </coupon_urls>
        <course>あり</course>
        <photo>
            <pc>
                <l>https://imgfp.hotp.jp/IMGH/85/03/P036408503/P036408503_238.jpg</l>
                <m>https://imgfp.hotp.jp/IMGH/85/03/P036408503/P036408503_168.jpg</m>
                <s>https://imgfp.hotp.jp/IMGH/85/03/P036408503/P036408503_58_s.jpg</s>
            </pc>
            <mobile>
                <l>https://imgfp.hotp.jp/IMGH/85/03/P036408503/P036408503_168.jpg</l>
                <s>https://imgfp.hotp.jp/IMGH/85/03/P036408503/P036408503_100.jpg</s>
            </mobile>
        </photo>
        <lunch>なし</lunch>
        <midnight>営業していない</midnight>
    </shop>
</results>
y-tomimoto commented 3 years ago

緯度経度でソートする場合

https://blog.medical-design.co.jp/archives/2318

y-tomimoto commented 3 years ago

APIキーをrepoに含めず使用する

https://guides.codepath.com/android/Storing-Secret-Keys-in-Android

y-tomimoto commented 3 years ago

朝の4時から深夜の2時まで5分置きに位置情報を取り続ける。 5分置きに判定

y-tomimoto commented 3 years ago
y-tomimoto commented 3 years ago

別でタスクを切る↑