Search code examples
androidalarmmanagerandroid-wifiandroid-timepicker

AlarmManager, TimePicker and Wifi control. How to?


Well, my application would display wifi information (still work in progress for this) and set with a time picker when the wifi turns on. The problem is that i don't know how to connect the button inside the dialog of the picker "set" at the AlarmManager method. This is the code

package com.pkg.androidmemoryinfo;

import android.app.Activity;
import android.app.ActivityManager;
import android.app.ActivityManager.MemoryInfo;
import android.app.Dialog;
import android.app.TimePickerDialog;
import android.content.Context;
import android.net.wifi.WifiInfo;
import android.net.wifi.WifiManager;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.TextView;
import android.widget.TimePicker;
import android.widget.Toast;

import java.util.Calendar;

    public class MainActivity extends Activity implements OnClickListener {

        private Button mTimeButton;

        private Calendar mCalen;
        private int hourOfDay;
        private int minute;
        private int ampm;

        private static final int Time_PICKER_ID = 0;

        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_main);
            mTimeButton = (Button) findViewById(R.id.time_button);
            mCalen = Calendar.getInstance();
            hourOfDay = mCalen.get(Calendar.HOUR_OF_DAY);
            minute = mCalen.get(Calendar.MINUTE);
            ampm = mCalen.get(Calendar.AM_PM);
            mTimeButton.setOnClickListener(this);
         // Creating a memory_info  Object
            MemoryInfo memory_info = new MemoryInfo();      
            // Using Activity Manager System Service
            ActivityManager activityManager = (ActivityManager) getSystemService(ACTIVITY_SERVICE);
            activityManager.getMemoryInfo(memory_info);     
            // Assign Memory Value to free_memory Variable
            long free_memory = memory_info.availMem / 1048576L;     
             // Display free Ram Memory
             TextView memoryInfoView = (TextView) findViewById(R.id.device_memory_status_txt);
             memoryInfoView.setText("Free RAM Memory :-"+ free_memory + " MB");    


        }
        public void run() {
            WifiManager wifi = (WifiManager) getSystemService(Context.WIFI_SERVICE);
            WifiInfo info = wifi.getConnectionInfo();
            String ssid = info.getSSID();

            TextView ssidTextView = (TextView) findViewById(R.id.wifiSSID);
            ssidTextView.setText(ssid);
        }
        @Override
        @Deprecated
        protected Dialog onCreateDialog(int id) {

            switch (id) {
                case Time_PICKER_ID:
                    return new TimePickerDialog(this, TimePickerListener,
                            hourOfDay, minute, false);
            }
            return null;
        }

        private TimePickerDialog.OnTimeSetListener TimePickerListener =
                new TimePickerDialog.OnTimeSetListener() {

                    // while dialog box is closed, below method is called.
                    public void onTimeSet(TimePicker view, int hour, int minute) {

                        mCalen.set(Calendar.HOUR_OF_DAY, hour);
                        mCalen.set(Calendar.MINUTE, minute);

                        int hour12format = mCalen.get(Calendar.HOUR);
                        hourOfDay = mCalen.get(Calendar.HOUR_OF_DAY);
                        minute = mCalen.get(Calendar.MINUTE);
                        ampm = mCalen.get(Calendar.AM_PM);
                        String ampmStr = (ampm == 0) ? "AM" : "PM";
                        // Set the Time String in Button

                        TextView dateInfoView = (TextView) findViewById(R.id.dateinfo);
                        dateInfoView.setText("L'attivazione del Wi-Fi è impostata per le ore: " + hour12format + " : " + minute + " / " + ampmStr);    

                        /// Here is the problem: Where have i to put this? ///
                        WifiManager wifiManager = (WifiManager) getSystemService(Context.WIFI_SERVICE); 
                        wifiManager.setWifiEnabled(true);


                    }
                };

        @SuppressWarnings("deprecation")
        @Override
        public void onClick(View v) {
            showDialog(Time_PICKER_ID);
        }
    }

As you can see i don't know how put the wifi control. How can i do it? How can i create an AlarmManager with my code? I Need an example if possible. Thanks


Solution

  • This is one example of time picker that I think you can use.

    --------Main Activity-------

    package com.example.chxboxtest;
    
    import android.app.Activity;
    import android.content.Intent;
    import android.os.Bundle;
    import android.view.View;
    import android.view.View.OnClickListener;
    import android.widget.Button;
    
    public class MainActivity extends Activity implements OnClickListener {
    
    private Button start_intent_button;
    
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
    
        start_intent_button = (Button) findViewById(R.id.start_intent_button);
        start_intent_button.setOnClickListener(this);
    
    }
    
    @Override
    public void onClick(View v) {
    
        switch (v.getId()) {
    
        case R.id.start_intent_button: {
    
            Intent intent = new Intent(this,TimePickerTest.class);
            startActivity(intent);
    
        }
            break;
        }
    
    }
    
    }
    

    -------------Main Activity XML-----------------

    <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
     >  
    
    <Button 
        android:id="@+id/start_intent_button"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Start Intent Time Picker"
        android:layout_centerInParent="true"
        />
    
    
    </RelativeLayout>
    

    -------------TimePicker class ---------------

      package com.example.chxboxtest;
    
     import android.app.Activity;
     import android.os.Bundle;
     import android.view.View;
     import android.view.View.OnClickListener;
     import android.widget.Button;
     import android.widget.CheckBox;
     import android.widget.TextView;
     import android.widget.TimePicker;
     import android.widget.Toast;
    
    
     public class TimePickerTest extends Activity implements OnClickListener{
    
    private CheckBox cBox;
    private TimePicker tPicker;
    private TextView showTime;
    private Button done;
    
    private String hour;
    private String minute;
    
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.time_picker_layout);
    
        initButtons();
    }
    
    
    
    private void initButtons() {
    
        tPicker = (TimePicker) findViewById(R.id.time_picker);
        showTime = (TextView) findViewById(R.id.get_time);
        done = (Button)findViewById(R.id.done);
        cBox = (CheckBox) findViewById(R.id.time_picker_checkbox);
        cBox.setOnClickListener(this);
        done.setOnClickListener(this);
    }
    
    @Override
    public void onClick(View v) {
    
        switch (v.getId()) {
    
        //If check enable or disble timePicker
        case R.id.time_picker_checkbox: {
    
            if (((CheckBox) v).isChecked()) {
                Toast.makeText(this, "CHECKED", Toast.LENGTH_SHORT).show();
                tPicker.setEnabled(false);
            } else {
                Toast.makeText(this, "NOT CHECKED", Toast.LENGTH_SHORT).show();
                tPicker.setEnabled(true);
            }
        }
            break;
    
    //If Done button pressed get time selected by user
    
        case R.id.done:{
    
    
            tPicker.clearFocus();
            // re-read the values, in my case i put them in a Time object.
            hour   = tPicker.getCurrentHour().toString();
            minute = tPicker.getCurrentMinute().toString();
    
            if(tPicker.getCurrentMinute().intValue() < 10){
    
                String setTimeText = hour+ " : " + "0" + minute;
                showTime.setText(setTimeText);
            }else{
                String setTimeText = hour+ " : " + minute;
                showTime.setText(setTimeText);
            }
    
    
    
    
    
        }
            break;
    
        default:
            break;
    
        }
    
    }
    
      }
    

    -------------TimerPicker XML------------

    <?xml version="1.0" encoding="utf-8"?>
    <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical" >
    
    <TextView
        android:id="@+id/timer_textview"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_above="@+id/time_picker"
        android:layout_toRightOf="@+id/time_picker_checkbox"
        android:text="Check this to Cancel Alarm" />
    
    <CheckBox
        android:id="@+id/time_picker_checkbox"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_above="@+id/time_picker"
        android:layout_centerHorizontal="true" />
    
    <TimePicker
        android:id="@+id/time_picker"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_centerInParent="true" />
    
    <Button
        android:id="@+id/done"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_below="@+id/time_picker"
        android:layout_centerHorizontal="true"
        android:gravity="center"
        android:text="Done" />
    
    <TextView
        android:id="@+id/get_time"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:layout_alignParentBottom="true"
        android:gravity="center_horizontal"
        android:text="Time"
        android:textColor="#FF0000"
        android:textSize="25sp" />
    
     </RelativeLayout>
    

    -------------Manifest.xml-----------

         **<activity
            android:name="com.example.chxboxtest.TimePickerTest"
            android:configChanges="orientation|keyboardHidden">
        </activity>**
    

    Dont forget to add TimePicker class as activity. BestPracice add all xml text in strings.xml

    Cheers