package com.forfan.bigbang.component.activity.setting;
import android.Manifest;
import android.app.Application;
import android.app.Notification;
import android.app.PendingIntent;
import android.content.Intent;
import android.content.pm.ActivityInfo;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.os.Build;
import android.os.Bundle;
import android.os.Handler;
import android.support.design.widget.TabLayout;
import android.support.v4.app.Fragment;
import android.support.v4.app.FragmentPagerAdapter;
import android.support.v4.app.NotificationManagerCompat;
import android.support.v4.view.ViewPager;
import android.support.v7.app.NotificationCompat;
import android.support.v7.widget.Toolbar;
import android.view.View;
import android.view.ViewGroup;
import android.view.ViewStub;
import com.alibaba.sdk.android.feedback.impl.FeedbackAPI;
import com.alibaba.sdk.android.feedback.util.IWxCallback;
import com.forfan.bigbang.BigBangApp;
import com.forfan.bigbang.R;
import com.forfan.bigbang.component.activity.FeedbackActivity;
import com.forfan.bigbang.component.base.BaseActivity;
import com.forfan.bigbang.util.ChanelUtil;
import com.forfan.bigbang.util.ConstantUtil;
import com.forfan.bigbang.util.UpdateUtil;
import com.forfan.bigbang.util.UrlCountUtil;
import com.shang.commonjar.contentProvider.SPHelper;
import com.shang.utils.StatusBarCompat;
import java.util.ArrayList;
import java.util.List;
import java.util.concurrent.TimeUnit;
import rx.Observable;
import rx.android.schedulers.AndroidSchedulers;
import rx.functions.Func1;
import static com.forfan.bigbang.util.ConstantUtil.BROADCAST_RELOAD_SETTING;
public class SettingActivity extends BaseActivity {
private static final String TAG = "SettingActivity";
private Toolbar toolbar;
private ViewPager viewPager;
private TabLayout tabLayout;
private List<BaseFragment> fragmentList;
private List<String> fragmentTitles;
private Handler handler;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);
setContentView(R.layout.activity_setting);
StatusBarCompat.setupStatusBarView(this, (ViewGroup) getWindow().getDecorView(), true, R.color.colorPrimary);
initToolBar();
initFragments();
initViewPager();
initIndiator();
Observable.timer(3, TimeUnit.SECONDS)
.observeOn(AndroidSchedulers.mainThread())
.subscribeOn(AndroidSchedulers.mainThread())
.flatMap(new Func1<Long, Observable<String>>() {
@Override
public Observable<String> call(Long aLong) {
return Observable.just("");
}
})
.subscribe(s -> {
if (s.equals("")) {
boolean hadEnterIntro = SPHelper.getBoolean(ConstantUtil.HAD_ENTER_INTRO, false);
boolean hasShared = SPHelper.getBoolean(ConstantUtil.HAD_SHARED, false);
int openTimes = SPHelper.getInt(ConstantUtil.SETTING_OPEN_TIMES, 0);
if (!hadEnterIntro){
ViewStub viewStub = (ViewStub) findViewById(R.id.intro_card);
viewStub.inflate();
return;
}
//// TODO: 2016/11/1 第一期先不上分享功能了
// TODO: 2016/10/31 如果用户选择不分享,应该短期内不再显示
if (!hasShared && openTimes >= 3 && openTimes % 8 == 0) {
ViewStub viewStub = (ViewStub) findViewById(R.id.share_card);
viewStub.inflate();
ShareCard shareCard= (ShareCard) findViewById(R.id.share);
shareCard.setDisMissListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
}
});
}
}
});
Observable.timer(3, TimeUnit.SECONDS)
.observeOn(AndroidSchedulers.mainThread())
.subscribeOn(AndroidSchedulers.mainThread())
.flatMap(new Func1<Long, Observable<String>>() {
@Override
public Observable<String> call(Long aLong) {
return Observable.just("");
}
})
.subscribe(s -> {
if (s.equals("")) {
try {
if (!ChanelUtil.isXposedApk(getApplicationContext())) {
UpdateUtil.autoCheckUpdate();
}
} catch (Throwable e) {
e.printStackTrace();
}
}
});
checkPermission();
int openTimes = SPHelper.getInt(ConstantUtil.SETTING_OPEN_TIMES, 0);
SPHelper.save(ConstantUtil.SETTING_OPEN_TIMES, openTimes + 1);
}
private void initViewPager(){
viewPager= (ViewPager) findViewById(R.id.container);
// viewPager.setOffscreenPageLimit(3);
viewPager.setAdapter(new FragmentPagerAdapter(getSupportFragmentManager()) {
@Override
public int getCount() {
return fragmentList.size();
}
@Override
public Fragment getItem(int position) {
return fragmentList.get(position);
}
@Override
public CharSequence getPageTitle(int position) {
return fragmentTitles.get(position);
}
});
viewPager.addOnPageChangeListener(new ViewPager.SimpleOnPageChangeListener(){
@Override
public void onPageSelected(int position) {
if (position==3){
fragmentList.get(position).setUserVisibleHint(true);
}
UrlCountUtil.onEvent(UrlCountUtil.CLICK_FRAGMENT_SWITCHES);
super.onPageSelected(position);
}
});
}
private void initFragments(){
fragmentList=new ArrayList<>();
fragmentTitles=new ArrayList<>();
fragmentList.add(new PickWordFragment());
fragmentList.add(new DisplayFragment());
fragmentList.add(new OthersFragment());
fragmentTitles.add(getString(R.string.fragment_segment));
fragmentTitles.add(getString(R.string.fragment_display));
fragmentTitles.add(getString(R.string.fragment_other));
}
private void initToolBar() {
// TODO: 2016/1/21 加入评价
toolbar = (Toolbar) findViewById(R.id.toolbar);
setSupportActionBar(toolbar);
}
private void initIndiator() {
// indicator= (FragmentTabIndicator) findViewById(R.id.indicator);
// indicator.setSelete(0);
// indicator.setOnTabSelectedListener(new FragmentTabIndicator.OnTabSelectedListener() {
// @Override
// public void onTabSelectedListener(int position) {
// viewPager.setCurrentItem(position);
// }
// });
tabLayout= (TabLayout) findViewById(R.id.tablayout);
tabLayout.setupWithViewPager(viewPager);
}
private void checkPermission() {
checkPermission(new CheckPermListener() {
@Override
public void grantPermission() {
checkFeedbackAnswer();
}
@Override
public void denyPermission() {
checkFeedbackAnswer();
}
}, R.string.ask_again,
Manifest.permission.READ_PHONE_STATE,
Manifest.permission.WRITE_EXTERNAL_STORAGE);
}
private void checkFeedbackAnswer() {
FeedbackAPI.initAnnoy( BigBangApp.getInstance(), ConstantUtil.ALI_APP_KEY);
FeedbackAPI.getFeedbackUnreadCount(getApplicationContext(), null, new IWxCallback() {
@Override
public void onSuccess(Object... objects) {
int unread=((Integer) objects[0]);
if (unread==0){
return;
}
String msg=getString(R.string.unread_feed_back,unread+"");
NotificationCompat.Builder notification = new NotificationCompat.Builder(BigBangApp.getInstance());
Bitmap notifyIcon;
notifyIcon= BitmapFactory.decodeResource(getResources(),R.mipmap.ic_launcher);
notification.setLargeIcon(notifyIcon);
// TODO: 2016/11/15
notification.setSmallIcon(R.mipmap.ic_launcher);
notification.setWhen(System.currentTimeMillis());
notification.setAutoCancel(true);
notification.setContentTitle(getString(R.string.app_name));
notification.setContentText(msg);
notification.setTicker(msg);
Intent notificationIntent = new Intent(SettingActivity.this, FeedbackActivity.class);
PendingIntent pendingIntent = PendingIntent.getActivity(SettingActivity.this, 1000, notificationIntent, 0);
notification.setContentIntent(pendingIntent);
int t=0;
t|= Notification.DEFAULT_VIBRATE;
t|=Notification.DEFAULT_SOUND;
notification.setDefaults(t);
NotificationManagerCompat nm= NotificationManagerCompat.from(SettingActivity.this);
if (Build.VERSION.SDK_INT<16){
nm.notify(1008600, notification.getNotification());
}else{
nm.notify(1008600, notification.build());
}
}
@Override
public void onError(int i, String s) {
}
@Override
public void onProgress(int i) {
}
});
}
@Override
protected void onPause() {
super.onPause();
sendBroadcast(new Intent(BROADCAST_RELOAD_SETTING));
}
}