arcanum_jp’s blog

おっさんの日記

富谷ごみ出しプロジェクトをとりあえずソース公開しました。

ごみ出しアプリのプロジェクトです。

https://github.com/arcanumjp/gomidashi

 前々から http://5374.jp に対抗意識を燃やしていたわけでもなく、Androidアプリを作りたい、自分の町でなんか作れたらいいかな程度に作ってアプリは公開していましたが、今回、Githubソースコードを公開しました。ご自分の地域でごみ出しアプリを作りたい場合に参考にしていただければと思います。

宮城県富谷町のゴミだし日を調べるアプリです。
情報は以下のURLからです(2013/12現在です。)
http://www.town.tomiya.miyagi.jp/guide/svGuideList.aspx?ctgcd=0701

https://play.google.com/store/apps/details?id=jp.arcanum.gomidashi.tomiya

 ハードコードしたメールや地域名などもありますがAndroid Studioのプロジェクト丸ごととりあえず公開しています。地域を対応したい場合以下を修正してみてください。
jp/arcanum/gomidashi/tomiya/util/LocalUtil.java

地域名の編集

 
 地域名を追加・修正・削除の場合、LCNAME_ から始まる部分を追加なり修正なり削除なりしてください。設定画面でユーザーが選択するのに使用されます。

    public static final String LCNAME_01 = "富ケ丘";
    public static final String LCNAME_02 = "あけの平・成田";
    public static final String LCNAME_03 = "鷹乃杜・日吉台・杜乃橋";
    public static final String LCNAME_04 = "東向陽台・明石台";
    public static final String LCNAME_05 = "大清水・上桜木";
    public static final String LCNAME_06 = "町上・町中・とちの木";
    public static final String LCNAME_07 = "町下・ひより台・太子堂・グリーンヒル";
    public static final String LCNAME_08 = "熊谷・原・穀田・大童・今泉";
    public static final String LCNAME_09 = "一ノ関・二ノ関・三ノ関・志戸田";
    public static final String LCNAME_10 = "大亀・石積・明石・西成田";

定数を変更したら、SettingsActivity#onCreate()あたりをメンテしてください。
SettingsActivity

        ArrayAdapter<String> adapter = new ArrayAdapter<String>(this,android.R.layout.simple_spinner_dropdown_item);
        String[] localnames = {
                "",
                LocalUtil.LCNAME_01,
                LocalUtil.LCNAME_02,
                LocalUtil.LCNAME_03,
                LocalUtil.LCNAME_04,
                LocalUtil.LCNAME_05,
                LocalUtil.LCNAME_06,
                LocalUtil.LCNAME_07,
                LocalUtil.LCNAME_08,
                LocalUtil.LCNAME_09,
                LocalUtil.LCNAME_10,
        };
        adapter.add("");
        adapter.add(LocalUtil.LCNAME_01);
        adapter.add(LocalUtil.LCNAME_02);
        adapter.add(LocalUtil.LCNAME_03);
        adapter.add(LocalUtil.LCNAME_04);
        adapter.add(LocalUtil.LCNAME_05);
        adapter.add(LocalUtil.LCNAME_06);
        adapter.add(LocalUtil.LCNAME_07);
        adapter.add(LocalUtil.LCNAME_08);
        adapter.add(LocalUtil.LCNAME_09);
        adapter.add(LocalUtil.LCNAME_10);

第nX曜日を理解する

 データは簡単で、”DAY_”から始まる定数で、以下のように一桁目が第n、二桁目が曜日を表しています。後述するGOMI_MAP 変数に、第nX曜日は、もえるごみ、など地域ごとに作っているだけです。

    // ---------------------------------------------------------------------------------
    // 第nx曜日のコードを定義
    // 一桁目 第n
    // 二桁目 x曜日(1:月曜 2:火曜 3:水曜 4:木曜 5:金曜 6:土曜 7:日曜)
    // ---------------------------------------------------------------------------------

    public static final String DAY_1SUN = "11";
    public static final String DAY_1MON = "12";
    public static final String DAY_1TUR = "13";
    public static final String DAY_1WED = "14";
    public static final String DAY_1THU = "15";
    public static final String DAY_1FRI = "16";
    public static final String DAY_1SAT = "17";
    public static final String DAY_2SUN = "21";
    public static final String DAY_2MON = "22";
    public static final String DAY_2TUR = "23";
    public static final String DAY_2WED = "24";
    public static final String DAY_2THU = "25";
    public static final String DAY_2FRI = "26";
    public static final String DAY_2SAT = "27";
    public static final String DAY_3SUN = "31";
    public static final String DAY_3MON = "32";
    public static final String DAY_3TUR = "33";
    public static final String DAY_3WED = "34";
    public static final String DAY_3THU = "35";
    public static final String DAY_3FRI = "36";
    public static final String DAY_3SAT = "37";
    public static final String DAY_4SUN = "41";
    public static final String DAY_4MON = "42";
    public static final String DAY_4TUR = "43";
    public static final String DAY_4WED = "44";
    public static final String DAY_4THU = "45";
    public static final String DAY_4FRI = "46";
    public static final String DAY_4SAT = "47";
    public static final String DAY_5SUN = "51";
    public static final String DAY_5MON = "52";
    public static final String DAY_5TUR = "53";
    public static final String DAY_5WED = "54";
    public static final String DAY_5THU = "55";
    public static final String DAY_5FRI = "56";
    public static final String DAY_5SAT = "57";

地域のデータを作る

以下の部分を変更してください。

    /**
     * 各地域ごとのゴミ出しスケジュール
     */
    public static final Map<String, String> GOMI_MAP = new HashMap<String, String>(){
        {
            // -----------------------------------------
            // 富が丘
            // -----------------------------------------
            put("11" + LCNAME_01 , "なし");             // 第一月曜日
            put("12" + LCNAME_01 , "もえるごみ");       // 第一火曜日
            put("13" + LCNAME_01 , "資源1種");          // 第一水曜日
            put("14" + LCNAME_01 , "もえるごみ");       // 第一木曜日
            put("15" + LCNAME_01 , "なし");             // 第一金曜日
            put("16" + LCNAME_01 , "もえるごみ");       // 第一土曜日
            put("17" + LCNAME_01 , "資源3種");          // 第一日曜日

            put("21" + LCNAME_01 , "なし");             // 第二月曜日
            put("22" + LCNAME_01 , "もえるごみ");       // 第二火曜日
            put("23" + LCNAME_01 , "資源2種");          // 第二水曜日

        ・・・省略

ゴミの説明を作る

 各地域の「燃えるごみ」や「資源1種」などで捨てられるゴミの説明を作ります。GOMITYPE_MAP と言う変数の部分を変更してください。

    /**
     * スケジュールに対する捨てられるゴミの簡単な説明
     */
    public static final Map<String, String> GOMITYPE_MAP = new HashMap<String, String>(){
        {
            put("なし", "");
            put("もえるごみ", "生ごみ、資源以外の紙くずなど");
            put("資源1種", "缶、雑鉄、紙類、乾電池");
            put("資源2種", "缶、ビン3種、割れ物、衣類、発泡スチロール・トレイ");
            put("資源3種", "プラスチック製容器包装、紙製容器包装・雑紙、複合素材ごみ、ペットボトル");
        }
    };


 その他、メールアドレスや、役場へのURLなどハードコードしている部分がありますが、適宜変更してください。反響があったらもっとマシに修正するかもしれません。