Java tutorial
/* * Copyright 2014 Jeremie Long * * 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. */ package com.lithidsw.wallbox.app.saturate; import java.io.File; import java.util.Calendar; import android.app.ProgressDialog; import android.app.WallpaperInfo; import android.app.WallpaperManager; import android.content.Context; import android.content.SharedPreferences; import android.graphics.Bitmap; import android.graphics.BitmapFactory; import android.graphics.drawable.Drawable; import android.os.AsyncTask; import android.os.Bundle; import android.support.v4.app.Fragment; import android.support.v4.app.FragmentActivity; import android.util.Log; import android.view.LayoutInflater; import android.view.Menu; import android.view.MenuItem; import android.view.View; import android.view.ViewGroup; import android.widget.ImageView; import android.widget.LinearLayout; import android.widget.SeekBar; import android.widget.TextView; import com.lithidsw.wallbox.R; import com.lithidsw.wallbox.utils.C; import com.lithidsw.wallbox.utils.CustomDialogs; import com.lithidsw.wallbox.utils.Utils; public class SaturateFrag extends Fragment { SharedPreferences prefs; private Utils mUtils; private WallpaperManager wm; private ImageView image; private float seekerFl; SeekBar seek; Menu mMenu; TextView time_text; int hour; boolean isRunning = true; LinearLayout ll; FragmentActivity fa; public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { fa = super.getActivity(); ll = (LinearLayout) inflater.inflate(R.layout.saturate_frag, container, false); prefs = fa.getSharedPreferences(C.PREF, Context.MODE_PRIVATE); mUtils = new Utils(fa); wm = WallpaperManager.getInstance(fa); image = (ImageView) ll.findViewById(R.id.main_image); try { WallpaperInfo info = wm.getWallpaperInfo(); info.toString(); mUtils.sendToast(getResources().getString(R.string.live_wallpaper)); } catch (NullPointerException ignore) { } time_text = (TextView) ll.findViewById(R.id.time_text); seek = (SeekBar) ll.findViewById(R.id.seeker); seek.setMax(23); Calendar cal = Calendar.getInstance(); hour = cal.get(Calendar.HOUR_OF_DAY); time_text.setText(mUtils.getHour(hour)); seek.setOnSeekBarChangeListener(new SeekBar.OnSeekBarChangeListener() { @Override public void onProgressChanged(SeekBar v, int num, boolean isU) { if (!isRunning) { time_text.setText(mUtils.getHour(num)); seekerFl = mUtils.getFloat(num); Drawable d = mUtils.convertToGrayscale(wm.getDrawable(), seekerFl); image.setImageDrawable(d); } } @Override public void onStartTrackingTouch(SeekBar arg0) { // TODO Auto-generated method stub } @Override public void onStopTrackingTouch(SeekBar arg0) { // TODO Auto-generated method stub } }); if (!prefs.getBoolean(C.PREF_SATURATE_FIRST_RUN_MAIN, false)) { prefs.edit().putBoolean(C.PREF_SATURATE_FIRST_RUN_MAIN, true).commit(); String title = getResources().getString(R.string.main_title_saturate); String message = getResources().getString(R.string.saturate_description); new CustomDialogs().openFirstDialog(fa, title, message); } setHasOptionsMenu(true); return ll; } private void updateViews() { Log.e("", "Size: " + mMenu.size()); isRunning = prefs.getBoolean(C.PREF_SATURATE_START, false); seek.setEnabled(!isRunning); if (isRunning) { final File file = new File(fa.getFilesDir(), C.CACHEIMG); Thread thread = new Thread() { @Override public void run() { final Bitmap myBitmap = BitmapFactory.decodeFile(file.toString()); fa.runOnUiThread(new Runnable() { public void run() { image.setImageBitmap(mUtils.toGrayscale(myBitmap, mUtils.h2F())); seek.setProgress(hour); if (mMenu.size() > 1) { mMenu.getItem(0).setVisible(false); mMenu.getItem(1).setVisible(true); } } }); } }; thread.start(); } else { seek.setProgress(hour); if (mMenu.size() > 1) { mMenu.getItem(0).setVisible(true); mMenu.getItem(1).setVisible(false); } } } private void setWallpaper() { if (isRunning) { stopRunning(); updateViews(); } else { startRunning(); } } private void startRunning() { new WallpaperLoader().execute(); } private void stopRunning() { mUtils.stopSaturatedAlarms(); mUtils.sendToast(SaturateFrag.this.getResources().getString(R.string.stopped_sat)); prefs.edit().putBoolean(C.PREF_SATURATE_START, false).commit(); } @Override public void onPrepareOptionsMenu(Menu menu) { mMenu = menu; updateViews(); } @Override public boolean onOptionsItemSelected(MenuItem item) { switch (item.getItemId()) { case R.id.action_apply: setWallpaper(); return true; case R.id.action_stop: setWallpaper(); return true; default: return false; } } class WallpaperLoader extends AsyncTask<String, String, String> { ProgressDialog progressDialog; @Override protected void onPreExecute() { progressDialog = ProgressDialog.show(fa, "", fa.getResources().getString(R.string.set_wallpaper)); } @Override protected String doInBackground(String... strings) { mUtils.setSaturatedWallpaper(); return null; } @Override protected void onPostExecute(String count) { progressDialog.dismiss(); mUtils.stopSaturatedAlarms(); mUtils.setSaturatedAlarms(); prefs.edit().putBoolean(C.PREF_SATURATE_START, true).commit(); mUtils.sendToast(fa.getResources().getString(R.string.started_sat)); updateViews(); } } }