/* * Copyright (c) 2013 by CDAC Chennai * * 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. * * @File ProximityDataListener * @Created: 20.11.2013 * @author: Prasenjit * Last Change: 22.08.2014 by Prasenjit */ package com.contextawareframework.backgroundservices; import com.contextawareframework.globalvariable.CAFConfig; import android.content.Context; import android.hardware.Sensor; import android.hardware.SensorEventListener; import android.hardware.SensorManager; import android.util.Log; import android.widget.Toast; /** * Description : To register Proximity Sensor. To make it as service, mention the * package name inside service tag of your Android manifest file * */ public class ProximityDataListener extends CAFService { /* Android SensorManager object to work with sensors.*/ private SensorManager mSensorManager; /* Local variable to select the type of sensor.*/ private Sensor mProximity; /* Local variable to store the context of the calling activity.*/ private final Context mContext; /* Local variable to store the SensorEventListener from the calling / implementing Activity. */ private SensorEventListener listener; // Use this string constant to debug this class private static final String TAG = "ProximityDataListener"; /* To enable / disable Log messages. */ private static boolean enableDebugging = CAFConfig.isEnableDebugging(); /* Class instance variable */ private static ProximityDataListener proximityDataListenerInstance; /** * Method to enable debugging * @param boolean */ public void setEnableDebugging(boolean value) { enableDebugging = value; } /** * Method to get the present value of enableDebugging * @return boolean */ public boolean getEnableDebugging() { return enableDebugging; } /** * Description : Private constructor. Singleton Pattern to create the class object * @param context Calling Activity context */ private ProximityDataListener(Context context) { mContext = context; } /** * Description : Method to create an instance of ProximityDataListener Class. * @param context Calling Activity context * @return ProximityDataListener Class instance */ public static synchronized ProximityDataListener getInstance(Context context) { if (proximityDataListenerInstance == null) proximityDataListenerInstance = new ProximityDataListener(context); return proximityDataListenerInstance; } /** * Method to enable Proximity Sensor in Android */ public void enableProximitySensor(SensorEventListener listenerFromActivity, int sampleRate) { if(listenerFromActivity!=null) { listener = listenerFromActivity; } else { if(CAFConfig.isEnableDebugging()) { Log.d(TAG,"enableProximitySensor Method"); Log.d(TAG,"listenerFromActivity is null"); } } mSensorManager = (SensorManager) mContext.getSystemService(Context.SENSOR_SERVICE); if (mSensorManager == null) { if(enableDebugging) { Log.d(TAG, "Proximity Sensor not found"); Toast.makeText(this, "No Proximity Sensor found! quit-",Toast.LENGTH_SHORT).show(); } } else { if(enableDebugging) { Log.d(TAG, "Proximity Sensor Found"); Toast.makeText(mContext, "Proximity Sensor found",Toast.LENGTH_SHORT).show(); } try { mProximity = mSensorManager.getDefaultSensor(Sensor.TYPE_PROXIMITY); mSensorManager.registerListener(listener, mProximity,sampleRate); } catch (Exception e) { e.printStackTrace(); } } } /** * Method to disable Proximity Sensor in Android */ public void disableProximitySensor(SensorEventListener listenerFromActivity) { try { if(mSensorManager != null) { if(listenerFromActivity!=null) mSensorManager.unregisterListener(listenerFromActivity); else { if(enableDebugging) Log.d(TAG,"listenerFromActivity is null"); } } } catch(NullPointerException e) { e.printStackTrace(); } } }