package org.iilab.pb.fragment;
import android.app.Activity;
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.content.IntentFilter;
import android.graphics.drawable.Drawable;
import android.os.Bundle;
import android.os.PowerManager;
import android.os.Vibrator;
import android.support.v4.app.Fragment;
import android.text.Html;
import android.util.DisplayMetrics;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import org.iilab.pb.R;
import org.iilab.pb.WizardActivity;
import org.iilab.pb.common.AppConstants;
import org.iilab.pb.common.ApplicationSettings;
import org.iilab.pb.common.GifDecoderView;
import org.iilab.pb.common.MyTagHandler;
import org.iilab.pb.data.PBDatabase;
import org.iilab.pb.model.Page;
import org.iilab.pb.trigger.HardwareTriggerReceiver;
import java.io.IOException;
import java.io.InputStream;
import java.util.HashMap;
/**
* Created by aoe on 1/9/14.
*/
public class WizardAlarmTestHardwareFragment extends Fragment {
private static final String PAGE_ID = "page_id";
private HashMap<String, Drawable> mImageCache = new HashMap<String, Drawable>();
private Activity activity;
DisplayMetrics metrics;
PowerManager.WakeLock wakeLock;
// TextView tvContent;
private GifDecoderView gifView;
Page currentPage;
public static WizardAlarmTestHardwareFragment newInstance(String pageId) {
WizardAlarmTestHardwareFragment f = new WizardAlarmTestHardwareFragment();
Bundle args = new Bundle();
args.putString(PAGE_ID, pageId);
f.setArguments(args);
return (f);
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
View view = inflater.inflate(R.layout.fragment_type_interactive_test_hardware, container, false);
// tvContent = (TextView) view.findViewById(R.id.fragment_contents);
gifView = (GifDecoderView) view.findViewById(R.id.gif_view);
return view;
}
@Override
public void onActivityCreated(Bundle savedInstanceState) {
super.onActivityCreated(savedInstanceState);
activity = getActivity();
if (activity != null) {
metrics = new DisplayMetrics();
activity.getWindowManager().getDefaultDisplay().getMetrics(metrics);
PowerManager pm = (PowerManager) activity.getSystemService(Context.POWER_SERVICE);
wakeLock = pm.newWakeLock(PowerManager.SCREEN_BRIGHT_WAKE_LOCK | PowerManager.ACQUIRE_CAUSES_WAKEUP | PowerManager.ON_AFTER_RELEASE, "TEST");
IntentFilter filter = new IntentFilter();
filter.addAction(Intent.ACTION_SCREEN_ON);
filter.addAction(Intent.ACTION_SCREEN_OFF);
activity.registerReceiver(wizardHardwareReceiver, filter);
String pageId = getArguments().getString(PAGE_ID);
String selectedLang = ApplicationSettings.getSelectedLanguage(activity);
PBDatabase dbInstance = new PBDatabase(activity);
dbInstance.open();
currentPage = dbInstance.retrievePage(pageId, selectedLang);
dbInstance.close();
if (currentPage.getContent() == null)
gifView.setVisibility(View.GONE);
else {
Html.fromHtml(currentPage.getContent(), new Html.ImageGetter() {
@SuppressWarnings("unchecked")
@Override
public Drawable getDrawable(final String source) {
try {
Log.e(">>>>>>>>>>>", "Source = " + source);
Drawable drawable = Drawable.createFromStream(activity.getAssets().open(source.substring(1, source.length())), null);
InputStream is = activity.getAssets().open(source.substring(1, source.length()));
gifView.playGif(is, metrics);
// drawable = AppUtil.setDownloadedImageMetrices(drawable, metrics, AppConstants.IMAGE_SCALABILITY_FACTOR * metrics.scaledDensity, imageScaleFlag);
mImageCache.put(source, drawable);
// updateImages(false, textHtml, context, metrics, tvContent, imageScaleFlag);
return drawable;
} catch (IOException e) {
Log.e(">>>>>>>>>>>>>>", "Failed to load gif image from asset");
e.printStackTrace();
}
return null;
}
}, new MyTagHandler());
Log.e(">>>>>", "content = " + currentPage.getContent());
// tvContent.setText(Html.fromHtml(currentPage.getContent(), null, new MyTagHandler()));
// AppUtil.updateImages(true, currentPage.getContent(), activity, metrics, tvContent, AppConstants.IMAGE_FULL_WIDTH);
}
}
}
@Override
public void onPause() {
super.onPause();
gifView.stopGif();
Log.e(">>>>>", "onPause WizardAlarmTestHardwareFragment");
}
@Override
public void onResume() {
super.onResume();
Log.e(">>>>>", "onResume WizardAlarmTestHardwareFragment");
}
@Override
public void onDestroy() {
super.onDestroy();
Log.e("????", "onDestroy");
activity.unregisterReceiver(wizardHardwareReceiver);
}
@Override
public void onDestroyView() {
gifView.clear();
gifView = null;
super.onDestroyView();
Log.e("????", "onDestroyView");
}
private BroadcastReceiver wizardHardwareReceiver = new HardwareTriggerReceiver() {
@Override
public void onReceive(Context context, Intent intent) {
super.onReceive(context, intent);
Log.e("????", "in onReceive in WizardAlarmTest");
((WizardActivity) getActivity()).hideToastMessageInInteractiveFragment();
getActivity().onUserInteraction();
if(multiClickEvent.canStartVibration()){
((WizardActivity) getActivity()).confirmationToastMessage();
}
}
@Override
protected void onActivation(Context context) {
Log.e(">>>>>>>", "in onActivation of wizardHWReceiver");
Vibrator vibrator = (Vibrator) activity.getSystemService(Context.VIBRATOR_SERVICE);
vibrator.vibrate(AppConstants.ALERT_CONFIRMATION_VIBRATION_DURATION);
String pageId = currentPage.getSuccessId();
Intent i = new Intent(activity, WizardActivity.class);
i.putExtra("page_id", pageId);
activity.startActivity(i);
activity.finish();
}
};
}