예제 #1
0
 public boolean processUrl(String city) {
   Uri u = Uri.parse(WEATHER_FEED);
   Uri.Builder builder = u.buildUpon();
   builder.appendQueryParameter("hl", "us");
   builder.appendQueryParameter("weather", city);
   String url = builder.build().toString();
   Log.v("", "run url " + url);
   handler.processFeed(url);
   currWeather = handler.getCurrentWeather();
   Log.i("", "current weather " + currWeather);
   weathers = handler.getForecastWeathers();
   return (currWeather != null && weathers != null);
 }
예제 #2
0
 /**
  * Create a new WeatherParser and immediately parse the data
  *
  * @param input The input String containing the XML data
  * @param out The Processor that will receive the data
  */
 public XMLParser(String input, Processor out) {
   SAXParserFactory saxParserFactory = SAXParserFactory.newInstance();
   try {
     SAXParser saxParser = saxParserFactory.newSAXParser();
     WeatherHandler handler = new WeatherHandler();
     saxParser.parse(new InputSource(new StringReader(input)), handler);
     List<Measurement> measurements = handler.getList();
     out.processMeasurements(measurements);
   } catch (ParserConfigurationException | SAXException | IOException e) {
     e.printStackTrace();
   } catch (ProcessorException e) {
     logger.error("Processor error:");
     e.printStackTrace();
   }
 }
    private void updateWeather() {
      mHandler.removeCallbacks(mWeatherUpdater);

      if (WeatherHandler.instance().updateMinutes() > 0) {
        WeatherHandler.instance().update(mUserAgent);

        boolean redraw = false;
        for (int i = 0; i < mInfoList.size(); ++i) {
          if (mInfoList.get(i).isType(InfoItem.TYPE_WEATHER)) {
            redraw = true;
            mInfoList.get(i).update(InfoItem.TYPE_WEATHER, null);
          }
        }

        if (redraw) {
          updateWallpaper();
        }

        mHandler.postDelayed(mWeatherUpdater, WeatherHandler.instance().updateMinutes() * 60000);
      }
    }
    public void onSharedPreferenceChanged(SharedPreferences prefs, String key) {
      String sVal = "";
      int iVal1 = 0;
      int iVal2 = 0;

      mHide = prefs.getBoolean(HIDE_WHEN_LOCKED, false);

      // BACKGROUND
      sVal = prefs.getString(BACKGROUND_IMAGE, "");
      if (sVal.length() > 0) loadImage(sVal);
      else mBackground.clearImage();
      iVal1 = prefs.getInt(BACKGROUND_SINGLE_COLOR, 0x00ffffff);
      iVal2 = prefs.getInt(BACKGROUND_TWO_COLORS, iVal1);
      mBackground.setColor(iVal1, iVal2);

      mInfoOnAllScreens = true;

      // ITEMS
      iVal1 = prefs.getInt(INFO_COUNT, 0);

      if (iVal1 == 0) {
        createDefault();
      } else {
        mInfoList.clear();
        InfoItem item = null;
        for (int i = 0; i < iVal1; ++i) {
          item = InfoItem.loadFromSharedPreference(LiveInfoWallpaper.this, prefs, getAssets(), i);

          if (item != null) {
            if (item.mScreen >= 0) {
              mInfoOnAllScreens = false;
            }

            mInfoList.add(item);
          }
        }
      }

      sVal = prefs.getString(WEATHER_KEY_LOCATION, "");

      WeatherHandler.instance().setLocation(sVal);
      iVal1 = prefs.getInt(WEATHER_KEY_UPDATE, 0);
      WeatherHandler.instance().updateMinutes(iVal1);
      iVal1 = prefs.getInt(WEATHER_KEY_ICONS_SIZE, 100);
      WeatherHandler.instance().setIconSize(100);
      sVal = prefs.getString(WEATHER_KEY_ICONS, "");
      WeatherHandler.instance().setIconSet(sVal);
      boolean bVal = prefs.getBoolean(WEATHER_KEY_FAHRENHEIT, false);
      WeatherHandler.instance().useFahrenheit(bVal);

      if (WeatherHandler.instance().updateMinutes() > 0) {
        mHandler.post(mWeatherUpdater);
      }

      updateBatteryItems(registerReceiver(null, new IntentFilter(Intent.ACTION_BATTERY_CHANGED)));
      updatePhoneInfo();
      updateDateTimeItems();
    }