2018年4月14日 星期六

行程備忘錄呼叫器(code)

MainActivity:

  1. package com.xin.app2;  
  2.   
  3. import android.app.ListActivity;  
  4. import android.content.Context;  
  5. import android.content.Intent;  
  6. import android.database.Cursor;  
  7. import android.database.sqlite.SQLiteDatabase;  
  8. import android.database.sqlite.SQLiteOpenHelper;  
  9. import android.net.Uri;  
  10. import android.os.Bundle;  
  11. import android.support.design.widget.FloatingActionButton;  
  12. import android.support.design.widget.Snackbar;  
  13. import android.support.v4.view.MenuItemCompat;  
  14. import android.support.v7.app.AlertDialog;  
  15. import android.support.v7.widget.SearchView;  
  16. import android.util.Log;  
  17. import android.view.LayoutInflater;  
  18. import android.view.View;  
  19. import android.support.design.widget.NavigationView;  
  20. import android.support.v4.view.GravityCompat;  
  21. import android.support.v4.widget.DrawerLayout;  
  22. import android.support.v7.app.ActionBarDrawerToggle;  
  23. import android.support.v7.app.AppCompatActivity;  
  24. import android.support.v7.widget.Toolbar;  
  25. import android.view.Menu;  
  26. import android.view.MenuItem;  
  27. import android.view.ViewGroup;  
  28. import android.widget.AdapterView;  
  29. import android.widget.BaseAdapter;  
  30. import android.widget.CheckBox;  
  31.   
  32. import android.widget.Filter;  
  33. import android.widget.Filterable;  
  34. import android.widget.ListView;  
  35. import android.widget.TextView;  
  36. import android.widget.Toast;  
  37.   
  38. import com.google.android.gms.ads.AdRequest;  
  39. import com.google.android.gms.ads.AdView;  
  40.   
  41. import java.text.SimpleDateFormat;  
  42. import java.util.Calendar;  
  43. import java.util.Date;  
  44. import java.util.Vector;  
  45.   
  46. public class MainActivity extends AppCompatActivity  
  47.         implements NavigationView.OnNavigationItemSelectedListener {  
  48.     Vector<DateItem> o ;  
  49.     boolean isSelectMode = false ;// 是否進入選取模式  
  50.     SQLiteDatabase sqLiteDatabase;  
  51.     MenuItem[] menuItem ;  
  52.     AlarmList alarmList ;  
  53.     Cursor c ;  
  54.     Context context ;  
  55.     private void LoadAdRequest(){  
  56.         AdView adView = (AdView)findViewById(R.id.adView);  
  57.         adView.loadAd(new AdRequest.Builder().build());  
  58.   
  59.     }  
  60.     @Override  
  61.     protected void onDestroy() {  
  62.         super.onDestroy();  
  63.         if(sqLiteDatabase != null){  
  64.             sqLiteDatabase.close();  
  65.             sqLiteDatabase = null;  
  66.         }  
  67.     }  
  68.     public void WindowView(Intent intent){  
  69.          if(intent.getIntExtra("view",-1)>0){  
  70.             View v= LayoutInflater.from(this).inflate(R.layout.view,null);  
  71.             TextView title = (TextView) v.findViewById(R.id.view_title);  
  72.              title.setText(intent.getStringExtra("title"));  
  73.             TextView con  = (TextView) v.findViewById(R.id.view_content);  
  74.              con.setText(intent.getStringExtra("content"));  
  75.             AlertDialog.Builder builder = new AlertDialog.Builder(this).setView(v);  
  76.             builder.setPositiveButton("close",null);  
  77.              AlertDialog dialog = builder.create();  
  78.              dialog.getWindow().setDimAmount(0.5f);  
  79.             builder.show();  
  80.   
  81.         }  
  82.     }  
  83.   
  84.     @Override  
  85.     protected void onCreate(Bundle savedInstanceState) {  
  86.         super.onCreate(savedInstanceState);  
  87.         setContentView(R.layout.activity_main);  
  88.   
  89.         context = getBaseContext();  
  90.         WindowView(getIntent());  
  91.         Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);setSupportActionBar(toolbar);  
  92.         toolbar.setLogo(R.mipmap.ic_launcher);  
  93.         getSupportActionBar().setBackgroundDrawable(getResources().getDrawable(R.drawable.p0502_m));  
  94.         LoadAdRequest();  
  95.   
  96.   
  97.         final FloatingActionButton fab = (FloatingActionButton) findViewById(R.id.fab);  
  98.         fab.setOnClickListener(new View.OnClickListener() {  
  99.             @Override  
  100.             public void onClick(View view) {  
  101.                 Snackbar.make(view, "Replace with your own action", Snackbar.LENGTH_LONG)  
  102.                         .setAction("Action"null).show();  
  103.             }  
  104.         });  
  105.   
  106.         DrawerLayout drawer = (DrawerLayout) findViewById(R.id.drawer_layout);  
  107.   
  108.         final ActionBarDrawerToggle toggle = new ActionBarDrawerToggle(  
  109.                 this, drawer, toolbar, R.string.navigation_drawer_open, R.string.navigation_drawer_close);  
  110.         drawer.addDrawerListener(toggle);  
  111.         toggle.syncState();  
  112.   
  113.         NavigationView navigationView = (NavigationView) findViewById(R.id.nav_view);  
  114.         navigationView.setNavigationItemSelectedListener(this);  
  115.         navigationView.setItemIconTintList(null);  
  116.   
  117.         FloatingActionButton floatingActionButton = (FloatingActionButton) findViewById(R.id.fab);  
  118.         floatingActionButton.setOnClickListener(new View.OnClickListener() {  
  119.             @Override  
  120.             public void onClick(View v) {  
  121.                 Intent intent = new Intent(MainActivity.this, ADD.class);  
  122.                 startActivity(intent);  
  123.             }  
  124.         });  
  125.   
  126.   
  127.     }  
  128.   
  129.     @Override  
  130.     protected void onResume() {  
  131.         super.onResume();  
  132.         //安裝  
  133.         installation();  
  134.     }  
  135.     public void setMenuItem(boolean b){  
  136.         for(int i =0;i<5;i++) {  
  137.             if (i < 2) menuItem[i].setVisible(b);  
  138.             else menuItem[i].setVisible(!b);  
  139.         }  
  140.     }  
  141.     public void setCheckCompept(boolean b){  
  142.         int isVisible ;  
  143.         if(b){  
  144.             isVisible = View.VISIBLE ;  
  145.             isSelectMode=true;  
  146.         }  
  147.         else{  
  148.             isVisible = View.GONE ;  
  149.             isSelectMode=false;  
  150.         }  
  151.   
  152.         for(DateItem h : o){  
  153.             if (h.checkBox != null) {  
  154.                 h.checkBox.setChecked(false);  
  155.                 h.checkBox.setVisibility(isVisible);  
  156.   
  157.             }  
  158.         }  
  159.   
  160.     }  
  161.     public void installation(){  
  162.         o = new Vector<DateItem>();  
  163.         MyDataBase myDataBase  = new MyDataBase(this,"Alarm_database",null,1);  
  164.         sqLiteDatabase = myDataBase.getWritableDatabase();  
  165.         c = sqLiteDatabase.query("Alarm_table",new String[]{"id","name","content","date","DateMillSec","MusicName"},null,null,null,null,null);  
  166.   
  167.         while(c.moveToNext()){  
  168.             o.add(new DateItem(c.getInt(0), new String[]{c.getString(1),c.getString(2),c.getString(3)},c.getLong(4),c.getString(5))) ;  
  169.         }  
  170.   
  171.          alarmList = new AlarmList();  
  172.          listView = (ListView) findViewById(R.id.listview);  
  173.          listView.setAdapter(alarmList);  
  174.          //LONG CLICK  
  175.          listView.setOnItemLongClickListener(new  AdapterView.OnItemLongClickListener(){  
  176.              @Override  
  177.              public boolean onItemLongClick(AdapterView<?> adapterView, View view, int i, long l) {  
  178.                  setCheckCompept(true);  
  179.                  setMenuItem(true);  
  180.                  return true;  
  181.              }  
  182.          });  
  183.   
  184.          listView.setOnItemClickListener(new AdapterView.OnItemClickListener() {  
  185.             @Override  
  186.             public void onItemClick(AdapterView<?> parent, View view, int position, long id) {  
  187.                 Intent Update = new Intent(context, com.xin.app2.Update.class);  
  188.                 String _id = String.valueOf(o.get(position).id);  
  189.                 Update.putExtra("id",_id);  
  190.                 startActivity(Update);  
  191.             }  
  192.         });  
  193.     }  
  194.     ListView listView ;  
  195.     @Override  
  196.     public void onBackPressed() {  
  197.         DrawerLayout drawer = (DrawerLayout) findViewById(R.id.drawer_layout);  
  198.         if (drawer.isDrawerOpen(GravityCompat.START)) {  
  199.             drawer.closeDrawer(GravityCompat.START);  
  200.         } else {  
  201.             super.onBackPressed();  
  202.         }  
  203.     }  
  204.   
  205.     @Override  
  206.     public boolean onCreateOptionsMenu(Menu menu) {  
  207.         getMenuInflater().inflate(R.menu.main, menu);  
  208.         MenuItem menu_Item = menu.findItem(R.id.app_bar_search);  
  209.         final SearchView searchView = (SearchView) menu_Item.getActionView();  
  210.   
  211.        MenuItemCompat.setOnActionExpandListener(menu_Item, new MenuItemCompat.OnActionExpandListener() {  
  212.             @Override  
  213.             public boolean onMenuItemActionExpand(MenuItem item) {  
  214.                 item.setVisible(false);  
  215.                 return true;  
  216.             }  
  217.   
  218.             @Override  
  219.             public boolean onMenuItemActionCollapse(MenuItem item) {  
  220.                 setCheckCompept(false);  
  221.                 invalidateOptionsMenu();  
  222.                 return true;  
  223.             }  
  224.         });  
  225.   
  226.         searchView.setOnQueryTextListener(new SearchView.OnQueryTextListener() {  
  227.             @Override  
  228.             public boolean onQueryTextSubmit(String query) {  
  229.                 return false;  
  230.             }  
  231.   
  232.             @Override  
  233.             public boolean onQueryTextChange(String newText) {  
  234.                 alarmList.getFilter().filter(newText);  
  235.                 return false;  
  236.             }  
  237.         });  
  238.   
  239.         menuItem = new MenuItem[5];  
  240.         for(int i=0;i<menuItem.length;i++)  
  241.             menuItem[i] = menu.getItem(i);  
  242.         return true;  
  243.     }  
  244.     @Override  
  245.     public boolean onOptionsItemSelected(MenuItem item) {  
  246.         int id = item.getItemId();  
  247.         switch(id){  
  248.             case R.id.action_settings:  
  249.                 startActivity(new Intent(this,Setting.class));  
  250.                 break;  
  251.            case R.id.remove:  
  252.                setCheckCompept(true);  
  253.                setMenuItem(true);  
  254.                 return true;  
  255.             case R.id.cancelRemove:  
  256.                 setCheckCompept(false);  
  257.                 setMenuItem(false);  
  258.                 return true;  
  259.             case R.id.yesRemove:  
  260.                 boolean isSuccess =false;  
  261.   
  262.                 for(int i=0;i<o.size();i++){  
  263.                     if(o.get(i).checkBox.isChecked()){  
  264.                         isSuccess = sqLiteDatabase.delete("Alarm_table","id = ?",new String[]{String.valueOf(o.get(i).id)})>0?true:false;  
  265.                     }  
  266.                 }  
  267.                 if(isSuccess){  
  268.                     startActivity(new Intent(this,MainActivity.class));  
  269.                     Toast.makeText(this,R.string.刪除成功,Toast.LENGTH_SHORT).show();  
  270.                     finish();  
  271.                 }  
  272.                 return true;  
  273.         }  
  274.   
  275.         return super.onOptionsItemSelected(item);  
  276.     }  
  277.     public void setCheckVillby(Boolean isopen){  
  278.         if(!isopen) {  
  279.             for (int i = 0; i < 5; i++) menuItem[i].setVisible(isopen);  
  280.         }else {  
  281.               for(int i =2;i<4;i++) menuItem[i].setVisible(isopen);  
  282.         }  
  283.     }  
  284.   
  285.     @SuppressWarnings("StatementWithEmptyBody")  
  286.     @Override  
  287.     public boolean onNavigationItemSelected(MenuItem item) {  
  288.         // Handle navigation view item clicks here.  
  289.         int id = item.getItemId();  
  290.         switch (id){  
  291.             case R.id.setting:  
  292.                 startActivity(new Intent(this,Setting.class));  
  293.                 break;  
  294.             case R.id.author :  
  295.                 Intent i = new Intent(Intent.ACTION_VIEW);  
  296.                 i.setData(Uri.parse("https://xinjava.blogspot.tw/"));  
  297.                 startActivity(i);  
  298.                 break;  
  299.             case R.id.email:  
  300.                 Intent emailIntent = new Intent(Intent.ACTION_SENDTO,Uri.parse("mailto:koer3741@gmail.com"));  
  301.                 emailIntent.putExtra(Intent.EXTRA_SUBJECT, "問題回報");  
  302.                 emailIntent.putExtra(Intent.EXTRA_TEXT, "撰述您的問題:");  
  303.                 startActivity(emailIntent);  
  304.                 break;  
  305.         }  
  306.   
  307.   
  308.   
  309.   
  310.   
  311.         DrawerLayout drawer = (DrawerLayout) findViewById(R.id.drawer_layout);  
  312.         drawer.closeDrawer(GravityCompat.START);  
  313.         return true;  
  314.     }  
  315.   
  316.   
  317.     class AlarmList extends BaseAdapter implements Filterable {  
  318.         LayoutInflater   inflater =  LayoutInflater.from(MainActivity.this);  
  319.         Vector<DateItem> oringnalList  ;  
  320.         @Override  
  321.         public int getCount() {  
  322.             return o.size();  
  323.         }  
  324.         @Override  
  325.         public Object getItem(int position) {  
  326.             return o.get(position);  
  327.         }  
  328.         @Override  
  329.         public long getItemId(int position) {  
  330.             return o.get(position).id;  
  331.         }  
  332.         @Override  
  333.         public View getView(int position, View convertView, ViewGroup parent) {  
  334.   
  335.             View v = convertView ;  
  336.             Holder holder ;  
  337.             if(v!=null){  
  338.                 holder = (Holder) v.getTag();  
  339.             }else{  
  340.                 v = inflater.inflate(R.layout.item,null);  
  341.                 holder = new Holder();  
  342.                 holder.id = o.get(position).id;  
  343.                 holder.textView = (TextView) v.findViewById(R.id.textView2);  
  344.                 holder.checkBox = (CheckBox) v.findViewById(R.id.checkBox);  
  345.                 v.setTag(holder);  
  346.             }  
  347.   
  348.             DateItem dateItem= o.get(position);  
  349.             dateItem.checkBox = holder.checkBox ;  
  350.   
  351.             if(isSelectMode) dateItem.checkBox.setVisibility(convertView.VISIBLE);//假設進入選取模式 就顯示  
  352.   
  353.             SimpleDateFormat format = new SimpleDateFormat("yyyy/MM/dd hh:mm a");  
  354.             Calendar calendar = Calendar.getInstance();  
  355.             calendar.setTimeInMillis(dateItem.SecInMill);  
  356.   
  357.             String buffer = dateItem.name ;  
  358.   
  359.             if(buffer.contains(MainActivity.this.getResources().getString(R.string.閱讀完畢))){  
  360.                 buffer = buffer.replace(getString(R.string.閱讀完畢),"");  
  361.                 holder.textView.setTextColor(getResources().getColor(R.color.white));  
  362.             }  
  363.             if(buffer.length()>=10) buffer = buffer.substring(0,10);  
  364.   
  365.             holder.textView.setText(buffer+"\r\n"+format.format(calendar.getTime()));  
  366.   
  367.   
  368.             return v;  
  369.         }  
  370.         @Override  
  371.         public Filter getFilter() {  
  372.            Filter filter = new Filter() {  
  373.                @Override  
  374.                protected FilterResults performFiltering(CharSequence charSequence) {  
  375.                    FilterResults results = new FilterResults();  
  376.                    charSequence = charSequence ;  
  377.                    if(oringnalList == null){//此物件同步  
  378.                        synchronized (this){  
  379.                            oringnalList = new Vector<DateItem>(o); //得到最初的o  
  380.                        }  
  381.                    }  
  382.                    Vector<DateItem> mListItem ;  
  383.                    if(charSequence !=null&&charSequence.toString().length()>0){  
  384.                        synchronized(AlarmList.this){  
  385.                            mListItem =  new Vector<>();  
  386.                            for(int i=0;i<oringnalList.size();i++){  
  387.                                if(oringnalList.get(i).name.contains(charSequence))  
  388.                                    mListItem.add(oringnalList.get(i));  
  389.                            }  
  390.                            results.count = mListItem.size();  
  391.                            results.values = mListItem;  
  392.                        }  
  393.                    }else {  
  394.   
  395.                        synchronized (AlarmList.this){  
  396.                            mListItem  =  new Vector<>(oringnalList);  
  397.                            results.count = mListItem.size();  
  398.                            results.values = mListItem;  
  399.                        }  
  400.                    }  
  401.   
  402.                    return results;  
  403.                }  
  404.   
  405.                @Override  
  406.                protected void publishResults(CharSequence charSequence, FilterResults filterResults) {  
  407.                    o = (Vector<DateItem>) filterResults.values;  
  408.                    if(o.size()>0)  
  409.                        notifyDataSetChanged();//調用時機:資料有改變  
  410.                    else  
  411.                        notifyDataSetInvalidated();//調用時機:資料已經空  
  412.                }  
  413.            };  
  414.   
  415.             return filter;  
  416.         }  
  417.     }  
  418.     class Holder {  
  419.          int id ;  
  420.          TextView textView ;  
  421.          CheckBox checkBox;  
  422.     }  
  423.   
  424.   
  425.   
  426. }  
  427.   
  428. class MyDataBase extends SQLiteOpenHelper {  
  429.     private static final String TAG = "MyDataBase have Create ";//幫建立資料庫類別  
  430.     public MyDataBase(Context context, String name, SQLiteDatabase.CursorFactory factory, int version) {  
  431.         super(context, name, factory, version);//建立資料庫  
  432.     }  
  433.   
  434.     @Override  
  435.     public void onCreate(SQLiteDatabase db) {//建立資料表  
  436.         db.execSQL("CREATE TABLE Alarm_table ( id Integer primary key autoincrement , name text  , content text  , DateMillSec Integer  , MusicName text ,date text   )");  
  437.     }  
  438.     @Override  
  439.     public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {  
  440.         db.execSQL("DROP TABLE IF EXISTS Alarm_table");  
  441.         onCreate(db);  
  442.     }  
  443. }  
  444. class DateItem{  
  445.     int id ;  
  446.     String name , content ,date,MusicName;  
  447.     long SecInMill;  
  448.     CheckBox checkBox ;  
  449.     DateItem(int id ,String[] data,long state,String Music){  
  450.         this.id = id;  
  451.         name = data[0];  
  452.         content = data[1];  
  453.         date = data[2];  
  454.         SecInMill = state;  
  455.         MusicName = Music;  
  456.     }  
  457.   
  458.     public String getName() {  
  459.         return name;  
  460.     }  
  461. }  
alarm :
package com.xin.app2;

import android.app.Activity;
import android.app.ActivityManager;
import android.app.Notification;
import android.app.NotificationManager;
import android.app.PendingIntent;
import android.content.BroadcastReceiver;
import android.content.ComponentName;
import android.content.ContentValues;
import android.content.Context;
import android.content.Intent;
import android.content.SharedPreferences;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;

import android.net.Uri;
import android.os.Build;

import android.support.v4.app.NotificationCompat;
import android.support.v7.app.AlertDialog;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.View;
import android.widget.RemoteViews;
import android.widget.TextView;
import android.widget.Toast;

import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;
import java.util.List;

public class alarm extends BroadcastReceiver {
    SQLiteDatabase sqLiteDatabase;
    SharedPreferences preferences;
    @Override    public void onReceive(Context context, Intent intent) {

        int id ;
        if((id = intent.getIntExtra("_id",-1))<0){
            Toast.makeText(context,"",Toast.LENGTH_LONG).show();
            return;
        }
        //客製化按鈕關閉        if(intent.getIntExtra("close",-1)>0){
            NotificationManager notificationManager = (NotificationManager) context.getSystemService(Context.NOTIFICATION_SERVICE);
            //停止音樂 取消通知            context.stopService(new Intent(context,MusicService.class));
            notificationManager.cancel(id);
        } else{

            if(intent.getStringExtra("MusicUri")!=null){
                preferences = context.getSharedPreferences("xin",context.MODE_PRIVATE);
                MyDataBase myDataBase  = new MyDataBase(context,"Alarm_database",null,1);
                sqLiteDatabase = myDataBase.getWritableDatabase();
                Uri Music = Uri.parse(intent.getStringExtra("MusicUri"));


                String _id = String.valueOf(id);
                Cursor c = sqLiteDatabase.query("Alarm_table",new String[]{"id","name","content","date","DateMillSec","MusicName"},"id=?",new String[]{_id},null,null,null);

                if(c.getCount()>0){
                    c.moveToFirst();
                    //客製化按鈕                    Intent intent1 = new Intent(context,alarm.class);
                    intent1.putExtra("_id",id);
                    intent1.putExtra("close",555);

                    intent1.addCategory(Calendar.getInstance().getTime().toString()+id);//分辨不同意圖                    PendingIntent pendingIntent = PendingIntent.getBroadcast(context,0,intent1,PendingIntent.FLAG_UPDATE_CURRENT);
                    RemoteViews remoteViews = new RemoteViews(context.getPackageName(),R.layout.notifity);

                    String title = c.getString(1).length()>9?c.getString(1).substring(0,9):c.getString(1);

                    remoteViews.setTextViewText(R.id.textView7,title);
                    remoteViews.setOnClickPendingIntent(R.id.button5,pendingIntent);
                    SimpleDateFormat format = new SimpleDateFormat("E hh:mm a");
                    Calendar calendar = Calendar.getInstance();
                    calendar.setTimeInMillis(c.getLong(4));
                    remoteViews.setTextViewText(R.id.textView6,format.format(calendar.getTime()));

                    Intent open = new Intent(context,MainActivity.class);
                    open.putExtra("title",c.getString(1));
                    open.putExtra("content",c.getString(2));
                    open.putExtra("view",558);
                        open.addCategory(Calendar.getInstance().getTime().toString()+id);//分辨不同意圖                    PendingIntent open_pend = PendingIntent.getActivity(context,0,open,PendingIntent.FLAG_UPDATE_CURRENT);


                    remoteViews.setOnClickPendingIntent(R.id.button8,open_pend);

                    Notification notification = null;
                    if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.N) {
                        notification = new Notification.Builder(context).setSmallIcon(R.mipmap.ic_launcher)
                                    .setCustomBigContentView(remoteViews)
                                    .build();
                    }else{

                        notification = new Notification.Builder(context)
                                .setSmallIcon(R.mipmap.ic_launcher_round)
                                .setContentTitle(c.getString(1))
                                .setContentText(c.getString(2))
                                .setContentIntent(open_pend)
                                .build();
                    }
                    NotificationManager notificationManager = (NotificationManager) context.getSystemService(Context.NOTIFICATION_SERVICE);

                    isVibrate(context,notification);
                    notificationManager.notify(id,notification);
                    playMusic(context,Music);
                    //刪除資料                    removwItem(_id,context,c.getString(1));
                    //如果活動正使用 就更新                    if(getCurrentActivityName(context).equals("com.xin.app2.MainActivity")){
                        Intent intent2 = new Intent(context, MainActivity.class);
                        intent2.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP|Intent.FLAG_ACTIVITY_NEW_TASK);//清除之前所有活動                        context.startActivity(intent2);
                    }
                }
            }
        }

    }
    private void isVibrate(Context context,Notification notification){

        if(preferences.getBoolean("isVir",false)){
            notification.vibrate = new long[]{100,250,100,500};
        }

    }
    public void playMusic(Context context,Uri Music){
        //音樂
        Intent MusicIntent = new Intent(context,MusicService.class);
        int len = preferences.getInt("Length",25);
        if(len<5) len=6;
        MusicIntent.putExtra("Length",len);
        MusicIntent.setData(Music);
        context.startService(MusicIntent);
    }
    public void removwItem(String id,Context context,String s){

       if(preferences.getBoolean("isAuto",false)){
           if(sqLiteDatabase.delete("Alarm_table","id=?",new String[]{id})!=-1)  Log.d("remove ","Success");
        }else{
            ContentValues contentValues = new ContentValues();
            contentValues.put("name",s+context.getResources().getString(R.string.閱讀完畢));

            if(sqLiteDatabase.update("Alarm_table",contentValues,"id=?",new String[]{id})>0)
                Log.d("Update ","Success");
        }
    }
    private String getCurrentActivityName(Context context) {
        ActivityManager am = (ActivityManager) context.getSystemService(Activity.ACTIVITY_SERVICE);

        // get the info from the currently running task        List<ActivityManager.RunningTaskInfo> taskInfo = am.getRunningTasks(1);

        ComponentName componentInfo = taskInfo.get(0).topActivity;

        return componentInfo.getClassName();
    }
}
AlarmInitReceiver:
package com.xin.app2;

import android.app.AlarmManager;
import android.app.PendingIntent;
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import android.icu.text.DateFormat;

import android.os.Build;
import android.util.Log;
import android.widget.Toast;

import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;
import java.util.Vector;

public class AlarmInitReceiver extends BroadcastReceiver {
    private SQLiteDatabase sqLiteDatabase;
    Vector<DateItem> o ;
    @Override    public void onReceive(Context context, Intent intent) {

        if(intent.getAction().equals(Intent.ACTION_BOOT_COMPLETED)){
            MyDataBase myDataBase = new MyDataBase(context, "Alarm_database", null, 1);
            SQLiteDatabase sqLiteDatabase = myDataBase.getWritableDatabase();


            final Cursor c = sqLiteDatabase.query("Alarm_table",new String[]{"id","name","content","date","DateMillSec","MusicName"},null,null,null,null,null);


                        while(c.moveToNext()){
                            if(c.getString(1).contains(context.getResources().getString(R.string.閱讀完畢)))
                                continue;

                            Calendar ca = Calendar.getInstance();
                            ca.setTimeInMillis(c.getLong(4));

                            Intent intent1 = new Intent(context, alarm.class);
                            intent1.putExtra("MusicUri",c.getString(5));
                            intent1.putExtra("_id", c.getInt(0));
                            intent1.addCategory(ca.getTime().toString()+c.getInt(0));
                            PendingIntent pi = PendingIntent.getBroadcast(context, c.getInt(0), intent1, PendingIntent.FLAG_UPDATE_CURRENT);
                            AlarmManager am = (AlarmManager) context.getSystemService(context.ALARM_SERVICE);
                            SimpleDateFormat format1 = new SimpleDateFormat("yyyy-MM-dd-HH-mm");

                            //Toast.makeText(context,format1.format(ca.getTime()),Toast.LENGTH_LONG).show();
                            if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M)  am.setExactAndAllowWhileIdle(AlarmManager.RTC_WAKEUP,ca.getTimeInMillis(), pi);
                            else if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) am.setExact(AlarmManager.RTC_WAKEUP,ca.getTimeInMillis(), pi);
                            else am.set(AlarmManager.RTC_WAKEUP,ca.getTimeInMillis(), pi);



                        }
            Log.d("Complie"," success");
                  
            

            
            }
        }

    }
Setting:
package com.xin.app2;

import android.content.SharedPreferences;
import android.os.Build;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.support.v7.widget.Toolbar;
import android.widget.CompoundButton;
import android.widget.SeekBar;
import android.widget.Switch;
import android.widget.Toast;

public class Setting extends AppCompatActivity {

    @Override    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_setting);


        getSupportActionBar().setBackgroundDrawable(getResources().getDrawable(R.drawable.p0502_m));
        final Switch Virate = (Switch) findViewById(R.id.switch3);

        final SharedPreferences preferences = getSharedPreferences("xin",MODE_PRIVATE);
        boolean isVirate = preferences.getBoolean("isVir",false);

        if(isVirate){
            Virate.setChecked(true);
        }else{
            Virate.setChecked(false);
        }
        Virate.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
            @Override            public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
                SharedPreferences.Editor editor = preferences.edit();
                if(isChecked){
                    editor.putBoolean("isVir",true);
                }else{
                    editor.putBoolean("isVir",false);
                }
                editor.apply();
            }
        });
        ///*************************************        final Switch AutoDel = (Switch) findViewById(R.id.switch4);
        boolean isAuto  = preferences.getBoolean("isAuto",false);

        if(isAuto){
            AutoDel.setChecked(true);
        }else{
            AutoDel.setChecked(false);
        }
        AutoDel.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
            @Override            public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
                SharedPreferences.Editor editor = preferences.edit();
                if(isChecked){
                    editor.putBoolean("isAuto",true);
                }else{
                    editor.putBoolean("isAuto",false);
                }
                editor.apply();
            }
        });
        ///*************************************        SeekBar Length = (SeekBar) findViewById(R.id.seekBar);
        int length = preferences.getInt("Length",25);
        Length.setProgress(length);
        Length.setOnSeekBarChangeListener(new SeekBar.OnSeekBarChangeListener() {
            SharedPreferences.Editor editor = preferences.edit();
            @Override            public void onProgressChanged(SeekBar seekBar, int progress, boolean fromUser) {
                editor.putInt("Length", progress);
                editor.apply();
            }


            @Override            public void onStartTrackingTouch(SeekBar seekBar) {

            }

            @Override            public void onStopTrackingTouch(SeekBar seekBar) {

            }
        });

    }
}
Update:
package com.xin.app2;

import android.app.AlarmManager;
import android.app.DatePickerDialog;
import android.app.PendingIntent;
import android.app.TimePickerDialog;
import android.content.ContentValues;
import android.content.Intent;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;

import android.media.Ringtone;
import android.media.RingtoneManager;
import android.net.Uri;
import android.os.Build;
import android.support.annotation.IntegerRes;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.support.v7.widget.Toolbar;
import android.view.View;
import android.widget.DatePicker;
import android.widget.EditText;
import android.widget.ListView;
import android.widget.TextView;
import android.widget.TimePicker;
import android.widget.Toast;

import java.text.SimpleDateFormat;
import java.util.Arrays;
import java.util.Calendar;
import java.util.Date;
import java.util.Vector;


public class Update extends AppCompatActivity implements TimePickerDialog.OnTimeSetListener,DatePickerDialog.OnDateSetListener {
    private SQLiteDatabase sqLiteDatabase;
    Vector<DateItem> o ;
    CalendarObj calendarObj ;
    TextView title ,se_date ,Music;
    EditText content ;
    private static final int ADD_MUSIC = 5012;
    Uri MusicUri ;
    public void findViewID(){
        title = (TextView) findViewById(R.id.Update_Name);
        se_date = (TextView) findViewById(R.id.Update_time);
        Music = (TextView) findViewById(R.id.Update_Music_Name);
        content = (EditText) findViewById(R.id.Update_Content);
    }
    public void onTimeSet(TimePicker view, int hourOfDay, int minute) {
        if(hourOfDay > -1 && view != null ){
            calendarObj.hour=hourOfDay;
            calendarObj.minute=minute;
            Calendar calendar = Calendar.getInstance();
            calendar.set(calendarObj.year,calendarObj.month,calendarObj.day,calendarObj.hour,calendarObj.minute);
            SimpleDateFormat format1 = new SimpleDateFormat("yyyy-MM-dd HH:mm");
            se_date.setText( format1.format(calendar.getTime()));
        }
    }
    @Override    public void onDateSet(DatePicker view, int year, int month, int dayOfMonth) {

        if(year > -1 && view != null ){
            calendarObj = new CalendarObj(year,month,dayOfMonth);
            Calendar current = Calendar.getInstance();
            current.setTimeInMillis(System.currentTimeMillis());
            TimePickerDialog dialog = new TimePickerDialog(this,android.R.style.Theme_Holo_Light_Dialog,this,current.get(Calendar.HOUR_OF_DAY),current.get(Calendar.MINUTE),false);
            dialog.setTitle("選擇時間");
            dialog.show();
        }
    }

    @Override    protected void onActivityResult(int requestCode, int resultCode, Intent data) {
        if(resultCode != RESULT_OK) return;
        switch (requestCode){
            case ADD_MUSIC:
                Uri u = data.getParcelableExtra(RingtoneManager.EXTRA_RINGTONE_PICKED_URI);
                Ringtone ringtone = RingtoneManager.getRingtone(this,u);
                Music = (TextView) findViewById(R.id.Update_Music_Name);
                Music.setText(ringtone.getTitle(this));
                MusicUri = u ;
                break;
        }
        super.onActivityResult(requestCode, resultCode, data);
    }
    public void addMusic(View view) {

        Intent intent = new Intent(RingtoneManager.ACTION_RINGTONE_PICKER);
        intent.putExtra(RingtoneManager.EXTRA_RINGTONE_TYPE,RingtoneManager.TYPE_ALARM);
        // 列表中不显示"默认铃声"选项,默认是显示的        intent.putExtra(RingtoneManager.EXTRA_RINGTONE_SHOW_DEFAULT,
                true);
        intent.putExtra(RingtoneManager.EXTRA_RINGTONE_SHOW_SILENT,false);
        intent.putExtra(RingtoneManager.EXTRA_RINGTONE_INCLUDE_DRM,
                true);
        // 设置列表对话框的标题,不设置,默认显示"铃声"        intent.putExtra(RingtoneManager.EXTRA_RINGTONE_TITLE, R.string.選擇音樂);
        startActivityForResult(intent, ADD_MUSIC);
    }
    public void SelectTime(View view) {
        Calendar current = Calendar.getInstance();
        current.setTimeInMillis(System.currentTimeMillis());
        DatePickerDialog datePickerDialog = new DatePickerDialog(this,this,current.get(Calendar.YEAR),current.get(Calendar.MONTH),current.get(Calendar.DAY_OF_MONTH));
        datePickerDialog.setTitle(R.string.選擇日期);
        datePickerDialog.show();

    }
    public int Update(Calendar select_calendar){
        String id = getIntent().getStringExtra("id");
        ContentValues contentValues = new ContentValues();
        contentValues.put("name",title.getText().toString().replace(getString(R.string.閱讀完畢),""));
        contentValues.put("content",content.getText().toString());
        contentValues.put("date",select_calendar.getTime().toString());
        contentValues.put("DateMillSec",select_calendar.getTimeInMillis());
        contentValues.put("MusicName",MusicUri.toString());

        if(sqLiteDatabase.delete("Alarm_table","id=?",new String[]{id})>0 &&sqLiteDatabase.insert("Alarm_table",null,contentValues) >0){

                Cursor c = sqLiteDatabase.query("Alarm_table",new String[]{"id"},null,null,null,null,null);
                c.moveToLast();
                return c.getInt(0);

        }
        return -1;
    }
    public void SetAlarmClock(int id,Calendar select_calendar){
        Intent intent = new Intent(this, alarm.class);
        intent.putExtra("MusicUri",MusicUri.toString());
        intent.putExtra("_id", id);
        intent.addCategory(select_calendar.getTime().toString()+id);
        PendingIntent pi = PendingIntent.getBroadcast(this, id, intent, PendingIntent.FLAG_UPDATE_CURRENT);
        AlarmManager am = (AlarmManager) getSystemService(this.ALARM_SERVICE);

        if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M)  am.setExactAndAllowWhileIdle(AlarmManager.RTC_WAKEUP,select_calendar.getTimeInMillis(), pi);
        else if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) am.setExact(AlarmManager.RTC_WAKEUP,select_calendar.getTimeInMillis(), pi);
        else am.set(AlarmManager.RTC_WAKEUP,select_calendar.getTimeInMillis(), pi);
    }



    @Override    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_update);

        getSupportActionBar().setBackgroundDrawable(getResources().getDrawable(R.drawable.p0502_m));
        if(getIntent()==null&&getIntent().getStringExtra("id")==null){
            Toast.makeText(this,"not found",Toast.LENGTH_SHORT).show();
            finish();
        }
        findViewID();
        installation();
    }

    public void installation(){
        String id = getIntent().getStringExtra("id");
        o = new Vector<DateItem>();
        MyDataBase myDataBase  = new MyDataBase(this,"Alarm_database",null,1);
        sqLiteDatabase = myDataBase.getWritableDatabase();
        Cursor c = sqLiteDatabase.query("Alarm_table",new String[]{"id","name","content","date","DateMillSec","MusicName"},"id = ?",new String[]{id},null,null,null);
        c.moveToFirst();
        if(c.getCount()>0&&!c.isNull(0)){
            SimpleDateFormat format1 = new SimpleDateFormat("yyyy-MM-dd HH:mm");
            Calendar calendar = Calendar.getInstance();
            calendar.setTimeInMillis(c.getLong(4));

            Date date = new Date(c.getString(3));
            Ringtone ringtone = RingtoneManager.getRingtone(this, Uri.parse(c.getString(5)));
            MusicUri = Uri.parse(c.getString(5));
            title.setText(c.getString(1).replace(getString(R.string.閱讀完畢),""));
            se_date.setText(format1.format(calendar.getTime()));
            content.setText(c.getString(2));
            Music.setText(ringtone.getTitle(this));

            //讀取時間放入物件            calendarObj = new CalendarObj(calendar.get(Calendar.YEAR),calendar.get(Calendar.MONTH),calendar.get(Calendar.DAY_OF_MONTH)
                    ,calendar.get(Calendar.HOUR_OF_DAY),calendar.get(Calendar.MINUTE));
        }

    }
    int[] StringArrayToIntArray(String[] s)
    {
        int[] ints = new int[s.length];
        for(String c : s)  ints[0] = Integer.parseInt(c);
        return ints ;
    }

    public void Update_OK(View view) {
        Intent i = new Intent(this,MainActivity.class);
        i.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
        try{
            if(title.getText().toString().equals("")){
                title.setText(R.string.無標題);
            }else if(title.getText().toString().length()>13){
                title.setText(R.string.字數過長);
            }else if(title.getText().toString().contains(getString(R.string.閱讀完畢))){
                title.setText("TITLE ERROR");
            }else if(title.getText().toString().equals("time")){
                Toast.makeText(this,R.string.選擇日期,Toast.LENGTH_SHORT).show();
            }else if(MusicUri==null){
                Toast.makeText(this,R.string.選擇音樂,Toast.LENGTH_SHORT).show();
            } else {
                Calendar select_calendar = Calendar.getInstance();
                select_calendar.set(calendarObj.year,calendarObj.month,calendarObj.day,calendarObj.hour,calendarObj.minute);

                int id = Update(select_calendar) ;
                if(id ==-1){
                    Toast.makeText(this,R.string.更新失敗,Toast.LENGTH_SHORT).show();
                }else{
                    SetAlarmClock(id,select_calendar);
                    Toast.makeText(this,R.string.更新成功,Toast.LENGTH_SHORT).show();
                }
                startActivity(i);
            }
        }catch (Exception e){
            Toast.makeText(this,R.string.更新失敗,Toast.LENGTH_SHORT).show();
            startActivity(i);
        }

    }
    private void Back(){
        Intent i = new Intent(this,MainActivity.class);
        i.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK|Intent.FLAG_ACTIVITY_CLEAR_TOP);
        startActivity(i);
    }





    public void Update_remove(View view) {
        String id = getIntent().getStringExtra("id");

            if(sqLiteDatabase.delete("Alarm_table","id = ? ",new String[]{id}) > 0){
                Toast.makeText(this,"刪除成功",Toast.LENGTH_SHORT).show();
            }else                Toast.makeText(this,"刪除失敗",Toast.LENGTH_SHORT).show();


        Back();
    }

    public void Update_Cancel(View view) {
        Back();
    }
}
ADD:
package com.xin.app2;

import android.Manifest;
import android.app.AlarmManager;
import android.app.DatePickerDialog;
import android.app.PendingIntent;
import android.app.TimePickerDialog;
import android.content.ContentValues;
import android.content.Intent;
import android.content.pm.PackageManager;
import android.content.res.ColorStateList;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import android.media.Ringtone;
import android.media.RingtoneManager;
import android.net.Uri;
import android.os.Build;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.support.v7.widget.Toolbar;
import android.util.Log;
import android.view.View;
import android.widget.Button;
import android.widget.DatePicker;
import android.widget.EditText;
import android.widget.TextView;
import android.widget.TimePicker;
import android.widget.Toast;

import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;

public class ADD extends AppCompatActivity implements TimePickerDialog.OnTimeSetListener,DatePickerDialog.OnDateSetListener {
    private static final int ADD_MUSIC = 5012;
    SQLiteDatabase sqLiteDatabase;
    TextView time ;
    EditText name , content ;
    CalendarObj calendarObj ;
    TextView textView5 ;
    private final int MAIN = 2032;
    Uri MusicUri ;
    @Override    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_add);

        getSupportActionBar().setBackgroundDrawable(getResources().getDrawable(R.drawable.p0502_m));

        MyDataBase myDataBase  = new MyDataBase(this,"Alarm_database",null,1);
        sqLiteDatabase = myDataBase.getWritableDatabase();
        time = (TextView) findViewById(R.id.textView4);
        name = (EditText) findViewById(R.id.editText);
        content = (EditText) findViewById(R.id.editText3);
    }
    @Override    protected void onDestroy() {
        super.onDestroy();
        if(sqLiteDatabase != null){
            sqLiteDatabase.close();
            sqLiteDatabase = null;
        }
    }
    @Override    protected void onActivityResult(int requestCode, int resultCode, Intent data) {
        if(resultCode != RESULT_OK) return;
        switch (requestCode){
            case ADD_MUSIC:
                Uri u = data.getParcelableExtra(RingtoneManager.EXTRA_RINGTONE_PICKED_URI);
                Ringtone ringtone = RingtoneManager.getRingtone(this,u);
                textView5 = (TextView) findViewById(R.id.textView5);
                textView5.setText(ringtone.getTitle(this));
                MusicUri = u ;
                break;
        }
        super.onActivityResult(requestCode, resultCode, data);
    }

    public void addMusic(View view) {
        Intent intent = new Intent(RingtoneManager.ACTION_RINGTONE_PICKER);
        intent.putExtra(RingtoneManager.EXTRA_RINGTONE_TYPE,RingtoneManager.TYPE_ALARM);
        // 列表中不显示"默认铃声"选项,默认是显示的        intent.putExtra(RingtoneManager.EXTRA_RINGTONE_SHOW_DEFAULT,
                true);
        intent.putExtra(RingtoneManager.EXTRA_RINGTONE_SHOW_SILENT,false);
        intent.putExtra(RingtoneManager.EXTRA_RINGTONE_INCLUDE_DRM,
                true);
        // 设置列表对话框的标题,不设置,默认显示"铃声"        intent.putExtra(RingtoneManager.EXTRA_RINGTONE_TITLE, R.string.選擇音樂);
        startActivityForResult(intent, ADD_MUSIC);
    }

    public void SelectTime(View view) {
            Calendar current = Calendar.getInstance();
            current.setTimeInMillis(System.currentTimeMillis());
            DatePickerDialog datePickerDialog = new DatePickerDialog(this,this,current.get(Calendar.YEAR),current.get(Calendar.MONTH),current.get(Calendar.DAY_OF_MONTH));
            datePickerDialog.setTitle(R.string.選擇日期);
            datePickerDialog.show();

    }

    @Override    public void onTimeSet(TimePicker view, int hourOfDay, int minute) {
        if(hourOfDay > -1 && view != null ){
            calendarObj.hour=hourOfDay;
            calendarObj.minute=minute;
            Calendar calendar = Calendar.getInstance();
            calendar.set(calendarObj.year,calendarObj.month,calendarObj.day,calendarObj.hour,calendarObj.minute);
            SimpleDateFormat format1 = new SimpleDateFormat("yyyy-MM-dd HH:mm");
            time.setText( format1.format(calendar.getTime()));
        }
    }
    @Override    public void onDateSet(DatePicker view, int year, int month, int dayOfMonth) {
        if(year > -1 && view != null ){
            calendarObj = new CalendarObj(year,month,dayOfMonth);
            Calendar current = Calendar.getInstance();
            current.setTimeInMillis(System.currentTimeMillis());
            TimePickerDialog dialog = new TimePickerDialog(this,android.R.style.Theme_Holo_Light_Dialog,this,current.get(Calendar.HOUR_OF_DAY),current.get(Calendar.MINUTE),false);
            dialog.setTitle(R.string.選擇日期);
            dialog.show();
        }
    }
    public int insert(Calendar select_calendar){
        ContentValues contentValues = new ContentValues();
        contentValues.put("name",name.getText().toString());
        contentValues.put("content",content.getText().toString());
        contentValues.put("date",select_calendar.getTime().toString());
        contentValues.put("DateMillSec",select_calendar.getTimeInMillis());
        contentValues.put("MusicName",MusicUri.toString());

        if(sqLiteDatabase.insert("Alarm_table",null,contentValues)!=-1 ){
            Cursor c = sqLiteDatabase.query("Alarm_table",new String[]{"id"},null,null,null,null,null);
            c.moveToLast();
            Toast.makeText(this,R.string.新增成功,Toast.LENGTH_SHORT).show();
            return c.getInt(0);
        }
        return -1;
    }
    public void SetAlarmClock(int id,Calendar select_calendar){
        Intent intent = new Intent(this, alarm.class);
        intent.putExtra("MusicUri",MusicUri.toString());
        intent.putExtra("_id", id);
        intent.addCategory(select_calendar.getTime().toString()+id);
        PendingIntent pi = PendingIntent.getBroadcast(this,id, intent, PendingIntent.FLAG_UPDATE_CURRENT);
        AlarmManager am = (AlarmManager) getSystemService(this.ALARM_SERVICE);

        if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M)  am.setExactAndAllowWhileIdle(AlarmManager.RTC_WAKEUP,select_calendar.getTimeInMillis(), pi);
        else if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) am.setExact(AlarmManager.RTC_WAKEUP,select_calendar.getTimeInMillis(), pi);
        else am.set(AlarmManager.RTC_WAKEUP,select_calendar.getTimeInMillis(), pi);

    }
    public void addItem(View view) {
        if(name.getText().toString().equals("")){
            name.setText(R.string.無標題);
        }else if(name.getText().toString().length()>13){
            name.setText(R.string.字數過長);
        }else if(name.getText().toString().toString().contains(getString(R.string.閱讀完畢))){
            name.setText("TITLE ERROR");
        } else if(time.getText().toString().equals("time")){
            Toast.makeText(this,R.string.選擇日期,Toast.LENGTH_SHORT).show();
        }else if(MusicUri==null){
            Toast.makeText(this,R.string.選擇音樂,Toast.LENGTH_SHORT).show();
        } else {
            Calendar select_calendar = Calendar.getInstance();
            select_calendar.set(calendarObj.year,calendarObj.month,calendarObj.day,calendarObj.hour,calendarObj.minute);

            int id = insert(select_calendar) ;
            if(id ==-1){
                Toast.makeText(this,R.string.新增失敗,Toast.LENGTH_SHORT).show();
            }else{
                SetAlarmClock(id,select_calendar);
            }
            Back();
        }
    }
    private void Back(){
        Intent i = new Intent(this,MainActivity.class);
        i.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK|Intent.FLAG_ACTIVITY_CLEAR_TOP);
        startActivity(i);
    }


    public void CANCEL(View view) {
        Back();
    }


}

class CalendarObj {
    int year, month, day, hour, minute;

    CalendarObj(int y, int m, int day) {
        year = y;
        month = m;
        this.day = day;
    }
    CalendarObj(int y, int m, int day,int h ,int minute) {
        year = y;
        month = m;
        this.day = day;
        hour = h ;
        this.minute = minute ;
    }
}
MusicService:
package com.xin.app2;

import android.app.Service;
import android.content.Intent;
import android.media.MediaPlayer;
import android.net.Uri;
import android.os.IBinder;
import android.support.annotation.IntDef;

public class MusicService extends Service implements MediaPlayer.OnCompletionListener{
    MediaPlayer mediaPlayer ;
    public MusicService() {
    }

    @Override    public IBinder onBind(Intent intent) {
        return null;
    }

    public void stopMusic(){
        if(mediaPlayer!=null){
            mediaPlayer.stop();
            mediaPlayer.release();
            mediaPlayer = null ;
        }
    }



    @Override    public void onDestroy() {
        super.onDestroy();
        stopMusic();
    }

    @Override    public void onCreate() {
        super.onCreate();
    }

    @Override    public int onStartCommand(Intent intent, int flags, int startId) {
        try {
            Uri Music = intent.getData();
            if(mediaPlayer==null){
                mediaPlayer = MediaPlayer.create(this,Music);
                mediaPlayer.setOnCompletionListener(this);
                mediaPlayer.setLooping(true);
            }
            mediaPlayer.start();
            final int len = intent.getIntExtra("Length",15);
            new Thread(new Runnable() {
                @Override                public void run() {
                    try {
                        Thread.currentThread().sleep(len*1000);
                    } catch (InterruptedException e) {
                        e.printStackTrace();
                    }
                    stopMusic();
                }
            }).start();
        }catch (Exception e){
            e.printStackTrace();
        }

        return START_STICKY;
    }

    @Override    public void onCompletion(MediaPlayer mp) {

    }
}

沒有留言:

張貼留言

注意:只有此網誌的成員可以留言。