package com.mingle.myapplication.activity;
import android.Manifest;
import android.annotation.TargetApi;
import android.bluetooth.BluetoothAdapter;
import android.bluetooth.BluetoothManager;
import android.content.Context;
import android.content.Intent;
import android.content.pm.PackageManager;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.graphics.drawable.BitmapDrawable;
import android.media.AudioManager;
import android.net.Uri;
import android.os.Handler;
import android.os.Message;
import android.provider.Settings;
import android.renderscript.Allocation;
import android.renderscript.Element;
import android.renderscript.RenderScript;
import android.renderscript.ScriptIntrinsicBlur;
import android.support.v4.app.ActivityCompat;
import android.support.v4.app.NotificationCompat;
import android.support.v4.content.ContextCompat;
import android.support.v7.app.ActionBar;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.support.v7.widget.Toolbar;
import android.util.Log;
import android.view.Gravity;
import android.view.LayoutInflater;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.widget.AdapterView;
import android.widget.Button;
import android.widget.ListView;
import android.widget.RelativeLayout;
import android.widget.Toast;
import android.widget.ToggleButton;
import com.mingle.myapplication.DialogCall;
import com.mingle.myapplication.R;
import com.mingle.myapplication.adapter.MainListAdapter;
import com.mingle.myapplication.model.Resion;
import com.mingle.myapplication.model.SharedPreferenceUtil;
import com.mingle.myapplication.service.RECOBackgroundRangingService;
import com.mingle.sweetpick.CustomDelegate;
import com.mingle.sweetpick.SweetSheet;
import java.util.ArrayList;
import java.util.List;
import com.mingle.myapplication.severcall.Servercall;
public class MainActivity extends AppCompatActivity
implements ActivityCompat.OnRequestPermissionsResultCallback {
public static final String RECO_UUID = "24DDF411-8CF1-440C-87CD-E368DAF9C93E";
private static final int REQUEST_ENABLE_BT = 1;
private static final int ACCESS_FINE_LOCATION_REQUEST_CODE = 1;
private static final int PERMISSIONS_REQ_NUM = 100;
// 필요한 권한들
private static String[] PERMISSIONS_CONTACT = {
Manifest.permission.ACCESS_COARSE_LOCATION,
Manifest.permission.ACCESS_FINE_LOCATION,
Manifest.permission.SEND_SMS,
Manifest.permission.READ_PHONE_STATE};
private boolean isExitResion = false; // 장소에서 나왔다면 메인 실행
private BluetoothManager mBluetoothManager;
private BluetoothAdapter mBluetoothAdapter;
private SweetSheet mSweetSheet3;
private RelativeLayout rl;
ToggleButton bottomToggleButton;
Button cinemaButton;
Button libraryButton;
Button exhibitButton;
Toolbar toolbar;
Toolbar bottombar;
Handler handler;
AudioManager audioManager;
int selectBeaconMajor = 0;
int difResionNum = 0;
DialogCall dialogCall;
Servercall servercall;
List<Resion> list;
MainListAdapter adapter;
ListView listView;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
showDialog(); //닉네임 입력 팝업창 불러오기. UserNickname 입력후 SharedPreference에 저장.
servercall=new Servercall();
servercall.customizeset(getApplicationContext()); //서버에서 디폴트값 얻어오기 . SharedPreference에 값 저장
audioManager = (AudioManager) getBaseContext().getSystemService(Context.AUDIO_SERVICE);
m_checkPermission();
try {
SharedPreferenceUtil.putSharedPreference(getApplicationContext(), "PresentBrightness", Settings.System.getInt(getContentResolver(), Settings.System.SCREEN_BRIGHTNESS));
SharedPreferenceUtil.putSharedPreference(getApplicationContext(), "PresentMode", audioManager.getRingerMode());
} catch (Exception e) {
e.printStackTrace();
}
/*
Intent monitorService = new Intent(this, RECOBackgroundRangingService.class);
startService(monitorService);
cinemaButton=(Button)findViewById(R.id.cinema_h_icon);
libraryButton=(Button)findViewById(R.id.library_h_icon);
exhibitButton=(Button)findViewById(R.id.exhibition_h_icon);
cinemaButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent cinema = new Intent(getApplicationContext(), ResionCinemaActivity.class);
cinema.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
startActivity(cinema);
}
});
libraryButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent library = new Intent(getApplicationContext(), RegionLibraryActivity.class);
library.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
startActivity(library);
}
});
exhibitButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent exhibition = new Intent(getApplicationContext(), ResionExhibitionActivity.class);
exhibition.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
startActivity(exhibition);
}
});
rl = (RelativeLayout) findViewById(R.id.rl);
setupCustomView();
toolbar = (Toolbar) findViewById(R.id.toolbar);
setSupportActionBar(toolbar);
//noinspection ConstantConditions
getSupportActionBar().setDisplayShowCustomEnabled(true);
getSupportActionBar().setDisplayOptions(ActionBar.DISPLAY_SHOW_CUSTOM);
getSupportActionBar().setCustomView(getLayoutInflater().inflate(R.layout.actionbar_layout, null),
new ActionBar.LayoutParams(
ActionBar.LayoutParams.WRAP_CONTENT,
ActionBar.LayoutParams.MATCH_PARENT,
Gravity.CENTER
)
);
bottombar = (Toolbar) findViewById(R.id.bottombar);
setSupportActionBar(bottombar);
getSupportActionBar().setDisplayShowCustomEnabled(true);
getSupportActionBar().setDisplayOptions(ActionBar.DISPLAY_SHOW_CUSTOM);
getSupportActionBar().setCustomView(getLayoutInflater().inflate(R.layout.bottombar_layout, null),
new ActionBar.LayoutParams(
ActionBar.LayoutParams.WRAP_CONTENT,
ActionBar.LayoutParams.MATCH_PARENT,
Gravity.CENTER
)
);
bottomToggleButton = (ToggleButton) findViewById(R.id.bottomToggleButton);
bottomToggleButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
if (bottomToggleButton.isChecked()) {
mSweetSheet3.show();
} else {
mSweetSheet3.dismiss();
}
}
});
*/
list = new ArrayList<Resion>();
adapter = new MainListAdapter(this, R.layout.layout_main_list, list);
listView = (ListView) findViewById(R.id.mainListView);
listView.setAdapter(adapter);
listView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
switch (position) {
case 0:
Intent cinema = new Intent(getApplicationContext(), ResionCinemaActivity.class);
cinema.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
startActivity(cinema);
break;
case 1:
Intent library = new Intent(getApplicationContext(), RegionLibraryActivity.class);
library.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
startActivity(library);
break;
case 2:
Intent exhibition = new Intent(getApplicationContext(), ResionExhibitionActivity.class);
exhibition.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
startActivity(exhibition);
break;
default:break;
}
}
});
addData();
SharedPreferenceUtil.putSharedPreference(getApplicationContext(), "ISRESIONSET", 0);
Intent monitorService = new Intent(this, RECOBackgroundRangingService.class);
startService(monitorService);
rl = (RelativeLayout) findViewById(R.id.rl);
setupCustomView();
toolbar = (Toolbar) findViewById(R.id.toolbar);
setSupportActionBar(toolbar);
//noinspection ConstantConditions
getSupportActionBar().setDisplayShowCustomEnabled(true);
getSupportActionBar().setDisplayOptions(ActionBar.DISPLAY_SHOW_CUSTOM);
getSupportActionBar().setCustomView(getLayoutInflater().inflate(R.layout.actionbar_layout, null),
new ActionBar.LayoutParams(
ActionBar.LayoutParams.WRAP_CONTENT,
ActionBar.LayoutParams.MATCH_PARENT,
Gravity.CENTER
)
);
bottombar = (Toolbar) findViewById(R.id.bottombar);
setSupportActionBar(bottombar);
getSupportActionBar().setDisplayShowCustomEnabled(true);
getSupportActionBar().setDisplayOptions(ActionBar.DISPLAY_SHOW_CUSTOM);
getSupportActionBar().setCustomView(getLayoutInflater().inflate(R.layout.bottombar_layout, null),
new ActionBar.LayoutParams(
ActionBar.LayoutParams.WRAP_CONTENT,
ActionBar.LayoutParams.MATCH_PARENT,
Gravity.CENTER
)
);
bottomToggleButton = (ToggleButton) findViewById(R.id.bottomToggleButton);
bottomToggleButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
if (bottomToggleButton.isChecked()) {
mSweetSheet3.show();
} else {
mSweetSheet3.dismiss();
}
}
});
SharedPreferenceUtil.putSharedPreference(getApplicationContext(), "ResionMajor", 0);
SharedPreferenceUtil.putSharedPreference(getApplicationContext(), "CallServiceFrag", 0); // 다른 지역에서 callservice 사용 안함
}
public void addData() {
Bitmap bitmapCin = BitmapFactory.decodeResource(getResources(), R.drawable.cinema);
Bitmap bitmapLib = BitmapFactory.decodeResource(getResources(), R.drawable.library);
Bitmap bitmapExh = BitmapFactory.decodeResource(getResources(), R.drawable.exhibition);
Bitmap blurCin=blur(bitmapCin);
Bitmap blurLib=blur(bitmapLib);
Bitmap blurExh=blur(bitmapExh);
BitmapDrawable blurDrawCin=new BitmapDrawable(getResources(), blurCin);
BitmapDrawable blurDrawLib=new BitmapDrawable(getResources(), blurLib);
BitmapDrawable blurDrawExh=new BitmapDrawable(getResources(), blurExh);
adapter.add(new Resion(R.mipmap.ic_cinema, blurDrawCin, "영화관"));
adapter.add(new Resion(R.mipmap.ic_library, blurDrawLib, "도서관"));
adapter.add(new Resion(R.mipmap.ic_exhibition, blurDrawExh, "전시장"));
}
public Bitmap blur(Bitmap image) {
if(null == image) return null;
Bitmap outputBitmap = Bitmap.createBitmap(image);
final RenderScript renderScript = RenderScript.create(this);
Allocation tmpIn = Allocation.createFromBitmap(renderScript, image);
Allocation tmpOut = Allocation.createFromBitmap(renderScript, outputBitmap);
ScriptIntrinsicBlur theIntrinsic = ScriptIntrinsicBlur.create(renderScript, Element.U8_4(renderScript));
theIntrinsic.setRadius(8f);
theIntrinsic.setInput(tmpIn);
theIntrinsic.forEach(tmpOut);
tmpOut.copyTo(outputBitmap);
return outputBitmap;
}
public void showDialog() {
dialogCall = new DialogCall();
dialogCall.show(getFragmentManager(), "NickName");
dialogCall.setCancelable(true);
}
@TargetApi(23)
private void m_checkPermission() {
mBluetoothManager = (BluetoothManager) getSystemService(Context.BLUETOOTH_SERVICE);
mBluetoothAdapter = mBluetoothManager.getAdapter();
if (mBluetoothAdapter == null || !mBluetoothAdapter.isEnabled()) {
Intent enableBTIntent = new Intent(BluetoothAdapter.ACTION_REQUEST_ENABLE);
startActivityForResult(enableBTIntent, REQUEST_ENABLE_BT);
}
if (ContextCompat.checkSelfPermission(this, Manifest.permission.ACCESS_COARSE_LOCATION) != PackageManager.PERMISSION_GRANTED ||
ContextCompat.checkSelfPermission(this, Manifest.permission.ACCESS_FINE_LOCATION) != PackageManager.PERMISSION_GRANTED ||
ContextCompat.checkSelfPermission(this, Manifest.permission.SEND_SMS) != PackageManager.PERMISSION_GRANTED ||
ContextCompat.checkSelfPermission(this, Manifest.permission.READ_PHONE_STATE) != PackageManager.PERMISSION_GRANTED) {
//권한이 없을 경우
//최초 인지, 재요청인지 확인
if (ActivityCompat.shouldShowRequestPermissionRationale(this, Manifest.permission.ACCESS_COARSE_LOCATION) ||
ActivityCompat.shouldShowRequestPermissionRationale(this, Manifest.permission.ACCESS_FINE_LOCATION) ||
ActivityCompat.shouldShowRequestPermissionRationale(this, Manifest.permission.SEND_SMS) ||
ActivityCompat.shouldShowRequestPermissionRationale(this, Manifest.permission.READ_PHONE_STATE)) {
// 임의로 취소 시킨 경우 권한 재요청
ActivityCompat.requestPermissions(this, PERMISSIONS_CONTACT, ACCESS_FINE_LOCATION_REQUEST_CODE);
} else {
//최초로 권한을 요청하는 경우
ActivityCompat.requestPermissions(this, PERMISSIONS_CONTACT, ACCESS_FINE_LOCATION_REQUEST_CODE);
}
} else {
//사용 권한이 있음 확인
}
try {
//Settings.System.canWrite(this);
Intent intent = new Intent(Settings.ACTION_MANAGE_WRITE_SETTINGS,
Uri.parse("package:" + getPackageName()));
startActivityForResult(intent, PERMISSIONS_REQ_NUM);
} catch (Exception e) {
e.printStackTrace();
}
handler = new Handler() {
@Override
public void handleMessage(Message msg) {
updateThread();
}
};
Thread myThread = new Thread(new Runnable() {
public void run() {
while (true) {
try {
handler.sendMessage(handler.obtainMessage());
Thread.sleep(1000);
} catch (Throwable t) {
}
}
}
});
myThread.start();
}
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
switch (requestCode) {
case PERMISSIONS_REQ_NUM:
if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.M) {
if (!Settings.canDrawOverlays(this)) {
//권한 승인이 이루어 지지 않음
}
}
break;
}
}
@Override
protected void onStart() {
super.onStart();
}
private void updateThread() {
if(selectBeaconMajor !=
SharedPreferenceUtil.getSharedPreference(getApplicationContext(), "ResionMajor")) {
difResionNum++;
if (difResionNum == 3) {
difResionNum = 0;
selectBeaconMajor = SharedPreferenceUtil.getSharedPreference(getApplicationContext(), "ResionMajor");
if (SharedPreferenceUtil.getSharedPreference(this, "ResionMajor") == 18243) { // 초록색
Intent intent = new Intent(getApplicationContext(), ResionCinemaActivity.class);
startActivity(intent);
//moveTaskToBack(SharedPreferenceUtil.isResionSet);
SharedPreferenceUtil.putSharedPreference(getApplicationContext(), "ISRESIONSET", 0);
//Intent intent3 = new Intent();
//intent3.setAction(Intent.ACTION_MAIN);
//intent3.addCategory(Intent.CATEGORY_HOME);
//startActivity(intent3);
isExitResion = true;
} else if (SharedPreferenceUtil.getSharedPreference(this, "ResionMajor") == 18249) { // 노란색
audioManager.setRingerMode(
SharedPreferenceUtil.getSharedPreference(getApplicationContext(), "ExhibitionRingerMode"));
Intent intent = new Intent(getApplicationContext(), ResionExhibitionActivity.class);
startActivity(intent);
//moveTaskToBack(SharedPreferenceUtil.isResionSet);
SharedPreferenceUtil.putSharedPreference(getApplicationContext(), "ISRESIONSET", 0);
//Intent intent3 = new Intent();
//intent3.setAction(Intent.ACTION_MAIN);
//intent3.addCategory(Intent.CATEGORY_HOME);
//startActivity(intent3);
isExitResion = true;
} else if (SharedPreferenceUtil.getSharedPreference(this, "ResionMajor") == 0) {
if (isExitResion) {
Intent intent = new Intent(getApplicationContext(), MainActivity.class);
intent.setFlags(Intent.FLAG_ACTIVITY_REORDER_TO_FRONT);
Settings.System.putInt(getContentResolver(), "screen_brightness",
SharedPreferenceUtil.getSharedPreference(getApplicationContext(), "PresentBrightness"));
audioManager.setRingerMode(
SharedPreferenceUtil.getSharedPreference(getApplicationContext(), "PresentMode"));
Toast.makeText(this, "MainResume", Toast.LENGTH_SHORT).show();
startActivity(intent);
isExitResion = false;
}
} else {
Log.d("RESION: ", "알수없는 비콘");
}
}
}
}
@Override
public void onRequestPermissionsResult(int requestCode, String permissions[], int[] grantResults) {
switch (requestCode) {
case ACCESS_FINE_LOCATION_REQUEST_CODE: {
if (grantResults.length > 0 && grantResults[0] == PackageManager.PERMISSION_GRANTED) {
// permission was granted
} else {
// permissions denied
}
return;
}
}
}
protected void onNewIntent(Intent intent) {
super.onNewIntent(intent);
}
@Override
protected void onResume() {
super.onResume();
SharedPreferenceUtil.putSharedPreference(getApplicationContext(), "CallServiceFrag", 0);
}
private void setupCustomView() {
mSweetSheet3 = new SweetSheet(rl);
CustomDelegate customDelegate = new CustomDelegate(true,
CustomDelegate.AnimationType.AlphaAnimation);
View view = LayoutInflater.from(this).inflate(R.layout.layout_custom_view, null, false);
customDelegate.setCustomView(view);
mSweetSheet3.setDelegate(customDelegate);
/*view.findViewById(R.id.intro_btn).setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent intent = new Intent(getApplicationContext(), IntroActivity.class);
intent.setFlags(Intent.FLAG_ACTIVITY_NO_HISTORY);
startActivity(intent);
finish();
}
});*/
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
//getMenuInflater().inflate(R.menu.menu_main, menu);
return true;
}
@Override
public void onBackPressed() {
if (mSweetSheet3.isShow()) {
mSweetSheet3.dismiss();
bottomToggleButton.setChecked(false);
} else {
super.onBackPressed();
}
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
return super.onOptionsItemSelected(item);
}
}