Android Open Source - ironcontrol-for-android Result Notification Manager






From Project

Back to project page ironcontrol-for-android.

License

The source code is released under:

Apache License

If you think the Android project ironcontrol-for-android listed in this page is inappropriate, such as containing malicious code/tools or violating the copyright, please email info at java2s dot com, thanks.

Java Source Code

/*
 * #%L/* w w  w.  j a  va  2 s . c o  m*/
 * =====================================================
 *   _____                _     ____  _   _       _   _
 *  |_   _|_ __ _   _ ___| |_  / __ \| | | | ___ | | | |
 *    | | | '__| | | / __| __|/ / _` | |_| |/ __|| |_| |
 *    | | | |  | |_| \__ \ |_| | (_| |  _  |\__ \|  _  |
 *    |_| |_|   \__,_|___/\__|\ \__,_|_| |_||___/|_| |_|
 *                             \____/
 * 
 * =====================================================
 * 
 * Hochschule Hannover
 * (University of Applied Sciences and Arts, Hannover)
 * Faculty IV, Dept. of Computer Science
 * Ricklinger Stadtweg 118, 30459 Hannover, Germany
 * 
 * Email: trust@f4-i.fh-hannover.de
 * Website: http://trust.f4.hs-hannover.de/
 * 
 * This file is part of ironcontrol for android, version 1.0.1, implemented by the Trust@HsH research group at the Hochschule Hannover.
 * %%
 * Copyright (C) 2013 Trust@HsH
 * %%
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 * 
 *      http://www.apache.org/licenses/LICENSE-2.0
 * 
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 * #L%
 */
package de.hshannover.f4.trust.ironcontrol.logic;

import java.util.concurrent.BlockingQueue;
import java.util.concurrent.LinkedBlockingQueue;

import android.app.NotificationManager;
import android.app.PendingIntent;
import android.content.Context;
import android.content.Intent;
import android.content.SharedPreferences;
import android.content.res.Resources;
import android.database.Cursor;
import android.media.MediaPlayer;
import android.os.Vibrator;
import android.preference.PreferenceManager;
import android.support.v4.app.NotificationCompat;
import de.hshannover.f4.trust.ifmapj.messages.PollResult;
import de.hshannover.f4.trust.ifmapj.messages.SearchResult;
import de.hshannover.f4.trust.ironcontrol.R;
import de.hshannover.f4.trust.ironcontrol.database.DBContentProvider;
import de.hshannover.f4.trust.ironcontrol.database.entities.Requests;
import de.hshannover.f4.trust.ironcontrol.logger.Level;
import de.hshannover.f4.trust.ironcontrol.logger.Logger;
import de.hshannover.f4.trust.ironcontrol.logger.LoggerFactory;
import de.hshannover.f4.trust.ironcontrol.logic.data.PollReceiver;
import de.hshannover.f4.trust.ironcontrol.view.list_activities.ListHierarchyActivity;
import de.hshannover.f4.trust.ironcontrol.view.list_activities.ListOverviewActivity;
import de.hshannover.f4.trust.ironcontrol.view.list_activities.ListResponsesActivity;

public class ResultNotificationManager extends Thread implements PollReceiver{

  private static final Logger logger = LoggerFactory.getLogger(ResultNotificationManager.class);

  private static final int SUBSCRIBE_NOTIFY_ID = 0;

  private SharedPreferences prefData;

  private Context context;

  private Resources r;

  private NotificationManager mNotificationManager;

  private BlockingQueue<PollResult> newEvents;

  private int notifyId;


  public ResultNotificationManager(Context context) {
    logger.log(Level.DEBUG, "New ResultNotificationManager()");

    this.context = context;
    this.r = context.getResources();
    this.mNotificationManager = (NotificationManager) context.getSystemService(Context.NOTIFICATION_SERVICE);
    this.prefData =  PreferenceManager.getDefaultSharedPreferences(context);
    this.newEvents = new LinkedBlockingQueue<PollResult>();
    this.notifyId = 10;
  }

  @Override
  public void run() {
    setName(ResultNotificationManager.class.getSimpleName());
    logger.log(Level.DEBUG, "run()...");

    PollResult event;
    try {
      while (!interrupted()) {
        event = this.newEvents.take();
        if (event != null) {
          for(SearchResult sr: event.getResults()){
            if(prefData.getBoolean(r.getString(R.string.aboutNewResults), false)){
              resultNotify(sr.getName(), sr.getResultItems().size());

              if(prefData.getBoolean(r.getString(R.string.vibration), false)){
                vibrator();
              }
              if(prefData.getBoolean(r.getString(R.string.sound), false)){
                ton();
              }
            }
          }
        }else{
          logger.log(Level.WARN, "event is null");
        }
      }
    } catch (InterruptedException e) {
      logger.log(Level.DEBUG, e.getMessage(), e);
    }
    logger.log(Level.DEBUG, "...run()");
  }

  private void ton(){
    //    Field[] fields = R.raw.class.getFields();
    //    for (Field field : fields) {
    //      int rid = 0;
    //      try {
    //        rid = field.getInt(field);
    //      } catch (IllegalArgumentException e) {
    //        e.printStackTrace();
    //      } catch (IllegalAccessException e) {
    //        e.printStackTrace();
    //      }
    //
    //      // Use that if you just need the file name
    //      String filename = field.getName();
    //
    //      System.out.println("rid=" + rid +" name=" + filename);
    //    }
    MediaPlayer test = MediaPlayer.create(context, R.raw.star_struck);
    test.start();
    //    get
  }

  private void vibrator(){

    Vibrator mVibratorService =(Vibrator) context.getSystemService(Context.VIBRATOR_SERVICE);
    mVibratorService.vibrate(new long[]{0, 250, 500, 500}, -1);

  }

  public void newSubscribeNotify(String subscribeName){
    if(prefData.getBoolean(r.getString(R.string.activeSubscriptions), false)){
      NotificationCompat.Builder mBuilder =new NotificationCompat.Builder(context)
      .setSmallIcon(R.drawable.ic_rss_feeds)
      .setContentTitle(r.getString(R.string.subscription))
      .setAutoCancel(false)
      .setOngoing(true)
      .setTicker(r.getString(R.string.newSubscription) + " " +subscribeName);

      Intent resultIntent = new Intent(context, ListOverviewActivity.class);
      resultIntent.setAction(r.getString(R.string.ACTION_SAVED_SUBSCRIPTIONS));

      PendingIntent contentIntent = PendingIntent.getActivity(
          context, 0,
          resultIntent,
          PendingIntent.FLAG_UPDATE_CURRENT);

      mBuilder.setContentIntent(contentIntent);

      mNotificationManager.notify(SUBSCRIBE_NOTIFY_ID, mBuilder.getNotification());
    }
  }

  private void resultNotify(String subscribeName, int itemCount){
    NotificationCompat.Builder mBuilder =new NotificationCompat.Builder(context)
    .setSmallIcon(R.drawable.ic_rss_feeds)
    .setContentTitle(r.getString(R.string.newSubscriptionResult))
    .setContentText(subscribeName)
    .setAutoCancel(true)
    .setTicker(r.getString(R.string.newIncomingResult))
    .setLights(0, 2000, 1000)
    .setContentInfo(itemCount +" "+ r.getString(R.string.result_items));


    Intent resultIntent = new Intent(context, ListResponsesActivity.class);
    resultIntent.setAction(r.getString(R.string.ACTION_SAVED_SUBSCRIPTIONS));
    resultIntent.putExtra(ListHierarchyActivity.EXTRA_ID_KEY, getSavedResultId(subscribeName));


    PendingIntent contentIntent = PendingIntent.getActivity(
        context, 0,
        resultIntent,
        PendingIntent.FLAG_UPDATE_CURRENT);

    mBuilder.setContentIntent(contentIntent);

    mNotificationManager.notify(notifyId, mBuilder.getNotification());

  }

  private String getSavedResultId(String subscribeName){
    Cursor cData = context.getContentResolver().query(
        DBContentProvider.SUBSCRIPTION_URI,
        null,
        Requests.COLUMN_NAME + "=?",
        new String[]{subscribeName},
        null);

    if(cData.moveToFirst()){
      if(cData.getCount() > 1){
        logger.log(Level.WARN, "For " + subscribeName + " there are more IDs");
      }
      return cData.getString(cData.getColumnIndexOrThrow(Requests.COLUMN_ID));
    }
    return "";
  }

  @Override
  public void submitNewPollResult(PollResult pr) {
    logger.log(Level.DEBUG, "newPollResult()...");
    try {
      this.newEvents.put(pr);
    } catch (InterruptedException e) {
      logger.log(Level.DEBUG, e.getMessage());
    }
    logger.log(Level.DEBUG, "...newPollResult()");
  }

}




Java Source Code List

de.hshannover.f4.trust.ironcontrol.asynctask.ConnectionTask.java
de.hshannover.f4.trust.ironcontrol.asynctask.PDP.java
de.hshannover.f4.trust.ironcontrol.asynctask.PublishTask.java
de.hshannover.f4.trust.ironcontrol.asynctask.PublishTestTask.java
de.hshannover.f4.trust.ironcontrol.asynctask.PurgePublisherTask.java
de.hshannover.f4.trust.ironcontrol.asynctask.SearchTask.java
de.hshannover.f4.trust.ironcontrol.asynctask.SubscriptionTask.java
de.hshannover.f4.trust.ironcontrol.database.DBContentProvider.java
de.hshannover.f4.trust.ironcontrol.database.DatabaseHelper.java
de.hshannover.f4.trust.ironcontrol.database.entities.AbstractEntity.java
de.hshannover.f4.trust.ironcontrol.database.entities.Attributes.java
de.hshannover.f4.trust.ironcontrol.database.entities.Connections.java
de.hshannover.f4.trust.ironcontrol.database.entities.IdentifierAttributes.java
de.hshannover.f4.trust.ironcontrol.database.entities.Identifier.java
de.hshannover.f4.trust.ironcontrol.database.entities.MetaAttributes.java
de.hshannover.f4.trust.ironcontrol.database.entities.Requests.java
de.hshannover.f4.trust.ironcontrol.database.entities.Responses.java
de.hshannover.f4.trust.ironcontrol.database.entities.ResultItems.java
de.hshannover.f4.trust.ironcontrol.database.entities.ResultMetaAttributes.java
de.hshannover.f4.trust.ironcontrol.database.entities.ResultMetadata.java
de.hshannover.f4.trust.ironcontrol.database.entities.VendorMetadata.java
de.hshannover.f4.trust.ironcontrol.exceptions.IronControlUncaughtExceptionHandler.java
de.hshannover.f4.trust.ironcontrol.logger.Level.java
de.hshannover.f4.trust.ironcontrol.logger.LogData.java
de.hshannover.f4.trust.ironcontrol.logger.LogReceiver.java
de.hshannover.f4.trust.ironcontrol.logger.LoggerFactory.java
de.hshannover.f4.trust.ironcontrol.logger.Logger.java
de.hshannover.f4.trust.ironcontrol.logger.appander.Appender.java
de.hshannover.f4.trust.ironcontrol.logger.appander.LogCatAppender.java
de.hshannover.f4.trust.ironcontrol.logger.appander.LogFileAppender.java
de.hshannover.f4.trust.ironcontrol.logger.appander.LogListAppender.java
de.hshannover.f4.trust.ironcontrol.logger.appander.LogToastAppender.java
de.hshannover.f4.trust.ironcontrol.logic.Connection.java
de.hshannover.f4.trust.ironcontrol.logic.KeystoreManager.java
de.hshannover.f4.trust.ironcontrol.logic.RequestsController.java
de.hshannover.f4.trust.ironcontrol.logic.ResultNotificationManager.java
de.hshannover.f4.trust.ironcontrol.logic.StoredResponses.java
de.hshannover.f4.trust.ironcontrol.logic.SubscriptionPoller.java
de.hshannover.f4.trust.ironcontrol.logic.data.BuildIdetifiers.java
de.hshannover.f4.trust.ironcontrol.logic.data.Operation.java
de.hshannover.f4.trust.ironcontrol.logic.data.PollReceiver.java
de.hshannover.f4.trust.ironcontrol.logic.data.PollSender.java
de.hshannover.f4.trust.ironcontrol.logic.data.PublishRequestData.java
de.hshannover.f4.trust.ironcontrol.logic.data.RequestData.java
de.hshannover.f4.trust.ironcontrol.logic.data.SearchRequestData.java
de.hshannover.f4.trust.ironcontrol.logic.data.SubscribeRequestData.java
de.hshannover.f4.trust.ironcontrol.view.AdvancedRequestFragment.java
de.hshannover.f4.trust.ironcontrol.view.ConnectionFragmentActivity.java
de.hshannover.f4.trust.ironcontrol.view.MainActivity.java
de.hshannover.f4.trust.ironcontrol.view.MetadataBuilderActivity.java
de.hshannover.f4.trust.ironcontrol.view.PublishActivity.java
de.hshannover.f4.trust.ironcontrol.view.SearchButtonFragment.java
de.hshannover.f4.trust.ironcontrol.view.SearchFragmentActivity.java
de.hshannover.f4.trust.ironcontrol.view.SettingsActivity.java
de.hshannover.f4.trust.ironcontrol.view.SimpleRequestFragment.java
de.hshannover.f4.trust.ironcontrol.view.SubscribeButtonFragment.java
de.hshannover.f4.trust.ironcontrol.view.SubscribeFragmentActivity.java
de.hshannover.f4.trust.ironcontrol.view.TabFragment.java
de.hshannover.f4.trust.ironcontrol.view.dialogs.MultichoiceDialogEvent.java
de.hshannover.f4.trust.ironcontrol.view.dialogs.MultichoiceDialog.java
de.hshannover.f4.trust.ironcontrol.view.dialogs.MultichoiceListDialog.java
de.hshannover.f4.trust.ironcontrol.view.dialogs.MultichoiceListEvent.java
de.hshannover.f4.trust.ironcontrol.view.dialogs.MultichoicePublishDialog.java
de.hshannover.f4.trust.ironcontrol.view.dialogs.MultichoiceRemoveDialog.java
de.hshannover.f4.trust.ironcontrol.view.dialogs.MultichoiceSearchDialog.java
de.hshannover.f4.trust.ironcontrol.view.dialogs.MultichoiceSubscribeDialog.java
de.hshannover.f4.trust.ironcontrol.view.list_activities.ListHierarchyActivity.java
de.hshannover.f4.trust.ironcontrol.view.list_activities.ListOverviewActivity.java
de.hshannover.f4.trust.ironcontrol.view.list_activities.ListResponsesActivity.java
de.hshannover.f4.trust.ironcontrol.view.list_activities.ListResultItemsActivity.java
de.hshannover.f4.trust.ironcontrol.view.list_activities.ListResultMetaActivity.java
de.hshannover.f4.trust.ironcontrol.view.list_activities.ListResultMetaAttributesActivity.java
de.hshannover.f4.trust.ironcontrol.view.list_activities.ListSavedConnectionsActivity.java
de.hshannover.f4.trust.ironcontrol.view.list_activities.ListSavedPublishsActivity.java
de.hshannover.f4.trust.ironcontrol.view.list_activities.ListVendorMetadataActivity.java
de.hshannover.f4.trust.ironcontrol.view.logger.LoggerListActivity.java
de.hshannover.f4.trust.ironcontrol.view.logger.LoggerListArrayAdapter.java
de.hshannover.f4.trust.ironcontrol.view.logger.LoggerPopUp.java
de.hshannover.f4.trust.ironcontrol.view.util.MetaDataEditText.java
de.hshannover.f4.trust.ironcontrol.view.util.MetaDataLinearLayout.java
de.hshannover.f4.trust.ironcontrol.view.util.MetadataValueFieldsBuilder.java
de.hshannover.f4.trust.ironcontrol.view.util.Node.java
de.hshannover.f4.trust.ironcontrol.view.util.PopUpEvent.java
de.hshannover.f4.trust.ironcontrol.view.util.PopUp.java
de.hshannover.f4.trust.ironcontrol.view.util.PromptSpinnerAdapter.java
de.hshannover.f4.trust.ironcontrol.view.util.RequiredSpinnerAdapter.java
de.hshannover.f4.trust.ironcontrol.view.util.SavePopUp.java
de.hshannover.f4.trust.ironcontrol.view.util.Util.java
de.hshannover.f4.trust.ironcontrol.view.util.ValidSpinnerAdapter.java