You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
300 lines
10 KiB
300 lines
10 KiB
package edu.hzuapps.androidlabs.watchtv;
|
|
|
|
import androidx.annotation.NonNull;
|
|
import androidx.appcompat.app.AppCompatActivity;
|
|
import androidx.core.app.ActivityCompat;
|
|
import androidx.core.content.ContextCompat;
|
|
import androidx.fragment.app.Fragment;
|
|
import androidx.viewpager2.widget.ViewPager2;
|
|
|
|
import android.Manifest;
|
|
import android.content.Context;
|
|
import android.content.Intent;
|
|
import android.content.SharedPreferences;
|
|
import android.content.pm.PackageManager;
|
|
import android.content.pm.ResolveInfo;
|
|
import android.content.res.Configuration;
|
|
import android.content.res.Resources;
|
|
import android.net.Uri;
|
|
import android.os.Bundle;
|
|
import android.util.Log;
|
|
import android.view.View;
|
|
import android.view.WindowManager;
|
|
import android.widget.Button;
|
|
import android.widget.EditText;
|
|
import android.widget.ImageView;
|
|
import android.widget.LinearLayout;
|
|
import android.widget.MediaController;
|
|
import android.widget.RelativeLayout;
|
|
import android.widget.Toast;
|
|
import android.widget.VideoView;
|
|
|
|
import com.dommy.qrcode.util.Constant;
|
|
import com.geogle.zxing.activity.CaptureActivity;
|
|
|
|
import java.util.ArrayList;
|
|
import java.util.List;
|
|
|
|
import edu.hzuapps.androidlabs.R;
|
|
import edu.hzuapps.androidlabs.watchtv.room.Programs;
|
|
import edu.hzuapps.androidlabs.watchtv.room.manager.DBEngine;
|
|
|
|
public class WatchTVActivity extends AppCompatActivity implements View.OnClickListener{
|
|
|
|
private static final String TAG = "zhu";
|
|
final WatchTVActivity thisActivity = this;
|
|
private List<Programs> data = null;
|
|
private ArrayList<String> datatag = null;
|
|
private Context thiscontext = this;
|
|
|
|
protected ViewPager2 viewPager;
|
|
protected LinearLayout lhome,lstar,lacc;
|
|
protected ImageView ivhome,ivstar,ivacc,ivcurr;
|
|
protected Button btnSearch,btnScanner,btnMore;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
@Override
|
|
protected void onCreate(Bundle savedInstanceState) {
|
|
super.onCreate(savedInstanceState);
|
|
setContentView(R.layout.activity_watch_t_v);
|
|
|
|
ActivityCompat.requestPermissions(this,new String[]{Manifest.permission.READ_EXTERNAL_STORAGE,
|
|
Manifest.permission.WRITE_EXTERNAL_STORAGE},
|
|
100);
|
|
|
|
DBEngine db = new DBEngine(thiscontext);
|
|
|
|
// dataInit();
|
|
// data = dataQuery();
|
|
dataInit();
|
|
initPage();
|
|
initMoudle();
|
|
|
|
|
|
}
|
|
|
|
private List<Programs> dataQuery() {
|
|
List<Programs> list = new ArrayList<Programs>();
|
|
// Resources resources = getResources();
|
|
// String[] name = resources.getStringArray(R.array.name);
|
|
// String[] url = resources.getStringArray(R.array.addr);
|
|
// for (int i = 0; i < name.length; i++) {
|
|
// Programs programs = new Programs();
|
|
// programs.setName(name[i]);
|
|
// programs.setAddr(url[i]);
|
|
// programs.setId(i);
|
|
// list.add(programs);
|
|
// }
|
|
// DBEngine db = new DBEngine(this);
|
|
// List<Programs> list = db.queryAllPrograms();
|
|
|
|
|
|
return list;
|
|
}
|
|
|
|
private void dataInit() {
|
|
|
|
data = new ArrayList<>();
|
|
datatag = new ArrayList<String>();
|
|
Resources resources = getResources();
|
|
String[] url = resources.getStringArray(R.array.addr);
|
|
datatag.add("新闻");
|
|
Programs p = new Programs();
|
|
p.setName("新闻");
|
|
data.add(p);
|
|
int index = 0;
|
|
for (int i = 0; i < 5; i++) {
|
|
Programs programs = new Programs();
|
|
programs.setName("新闻"+(i+1));
|
|
programs.setAddr(url[index]);
|
|
programs.setId(index++);
|
|
data.add(programs);
|
|
}
|
|
|
|
datatag.add("娱乐");
|
|
p = new Programs();
|
|
p.setName("娱乐");
|
|
data.add(p);
|
|
for (int i = 0; i < 5; i++) {
|
|
Programs programs = new Programs();
|
|
programs.setName("娱乐"+(i+1));
|
|
programs.setAddr(url[index]);
|
|
programs.setId(index++);
|
|
data.add(programs);
|
|
}
|
|
datatag.add("自然");
|
|
p = new Programs();
|
|
p.setName("自然");
|
|
data.add(p);
|
|
for (int i = 0; i < 5; i++) {
|
|
Programs programs = new Programs();
|
|
programs.setName("自然"+(i+1));
|
|
programs.setAddr(url[index]);
|
|
programs.setId(index++);
|
|
data.add(programs);
|
|
}
|
|
}
|
|
|
|
private void initPage(){
|
|
viewPager = findViewById(R.id.vp_mid);
|
|
ArrayList<Fragment> fragments= new ArrayList<>();
|
|
fragments.add(HomeFragment.newInstance());
|
|
fragments.add(CollectFragment.newInstances(data,datatag));
|
|
fragments.add(UserFragment.newInstance());
|
|
viewPager.setAdapter(new MyFragmentAdapter(getSupportFragmentManager(),getLifecycle(),fragments));
|
|
viewPager.registerOnPageChangeCallback(new ViewPager2.OnPageChangeCallback() {
|
|
@Override
|
|
public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) {
|
|
super.onPageScrolled(position, positionOffset, positionOffsetPixels);
|
|
}
|
|
|
|
@Override
|
|
public void onPageSelected(int position) {
|
|
super.onPageSelected(position);
|
|
changTab(position);
|
|
}
|
|
|
|
@Override
|
|
public void onPageScrollStateChanged(int state) {
|
|
super.onPageScrollStateChanged(state);
|
|
}
|
|
});
|
|
}
|
|
|
|
|
|
|
|
private void initMoudle(){
|
|
lhome = findViewById(R.id.part_home);
|
|
lstar = findViewById(R.id.part_collect);
|
|
lacc = findViewById(R.id.ll_friend);
|
|
ivhome = findViewById(R.id.iv_home);
|
|
ivstar = findViewById(R.id.iv_collect);
|
|
ivacc = findViewById(R.id.iv_user);
|
|
btnSearch = findViewById(R.id.btn_search);
|
|
btnScanner = findViewById(R.id.btn_scanner);
|
|
btnMore = findViewById(R.id.btn_more);
|
|
|
|
lhome.setOnClickListener(this);
|
|
lstar.setOnClickListener(this);
|
|
lacc.setOnClickListener(this);
|
|
btnSearch.setOnClickListener(this);
|
|
btnScanner.setOnClickListener(this);
|
|
btnMore.setOnClickListener(this);
|
|
|
|
ivcurr = ivhome;
|
|
ivhome.setSelected(true);
|
|
}
|
|
|
|
private void changTab(int position) {
|
|
ivcurr.setSelected(false);
|
|
switch (position){
|
|
case R.id.part_home:
|
|
viewPager.setCurrentItem(0);
|
|
case 0:
|
|
ivhome.setSelected(true);
|
|
ivcurr = ivhome;
|
|
break;
|
|
case R.id.part_collect:
|
|
viewPager.setCurrentItem(1);
|
|
case 1:
|
|
ivstar.setSelected(true);
|
|
ivcurr = ivstar;
|
|
break;
|
|
case R.id.ll_friend:
|
|
case R.id.btn_more:
|
|
viewPager.setCurrentItem(2);
|
|
case 2:
|
|
ivacc.setSelected(true);
|
|
ivcurr = ivacc;
|
|
break;
|
|
}
|
|
}
|
|
|
|
@Override
|
|
public void onClick(View v) {
|
|
switch (v.getId()){
|
|
case R.id.btn_more:
|
|
case R.id.part_home:
|
|
case R.id.part_collect:
|
|
case R.id.ll_friend:
|
|
changTab(v.getId());
|
|
break;
|
|
case R.id.btn_search:
|
|
Intent intent = new Intent(thisActivity, SelectActivity.class);
|
|
thisActivity.startActivity(intent);
|
|
break;
|
|
case R.id.btn_scanner:
|
|
startQrCode();
|
|
break;
|
|
}
|
|
|
|
}
|
|
|
|
// 开始扫码
|
|
private void startQrCode() {
|
|
if (ContextCompat.checkSelfPermission(this, Manifest.permission.CAMERA) != PackageManager.PERMISSION_GRANTED) {
|
|
if (ActivityCompat.shouldShowRequestPermissionRationale(this, Manifest.permission.CAMERA)) {
|
|
Toast.makeText(WatchTVActivity.this, "请至权限中心打开本应用的相机访问权限", Toast.LENGTH_LONG).show();
|
|
}
|
|
// 申请权限
|
|
ActivityCompat.requestPermissions(WatchTVActivity.this, new String[]{Manifest.permission.CAMERA}, Constant.REQ_PERM_CAMERA);
|
|
return;
|
|
}
|
|
// 二维码扫码
|
|
Intent intent = new Intent(WatchTVActivity.this, CaptureActivity.class);
|
|
startActivityForResult(intent, Constant.REQ_QR_CODE);
|
|
}
|
|
|
|
|
|
@Override
|
|
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
|
|
super.onActivityResult(requestCode, resultCode, data);
|
|
String result = "";
|
|
//扫描结果回调
|
|
if (requestCode == Constant.REQ_QR_CODE && resultCode == RESULT_OK) {
|
|
if (data != null) {
|
|
Bundle bundle = data.getExtras();
|
|
if (bundle == null) {
|
|
return;
|
|
}
|
|
result = bundle.getString(Constant.INTENT_EXTRA_KEY_QR_SCAN);
|
|
}
|
|
}
|
|
Intent intent = new Intent(Intent.ACTION_VIEW);
|
|
intent.setData(Uri.parse(result)); //splitflowurl为分流地址
|
|
if (!hasPreferredApplication(this,intent)){
|
|
intent.setClassName("com.android.browser", "com.android.browser.BrowserActivity");
|
|
}
|
|
startActivity(intent);
|
|
|
|
}
|
|
|
|
public static boolean hasPreferredApplication(Context context, Intent intent) {
|
|
PackageManager pm = context.getPackageManager();
|
|
ResolveInfo info = pm.resolveActivity(intent, PackageManager.MATCH_DEFAULT_ONLY);
|
|
return !"android".equals(info.activityInfo.packageName);
|
|
}
|
|
|
|
@Override
|
|
public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) {
|
|
super.onRequestPermissionsResult(requestCode, permissions, grantResults);
|
|
switch (requestCode) {
|
|
case Constant.REQ_PERM_CAMERA:
|
|
// 摄像头权限申请
|
|
if (grantResults.length > 0 && grantResults[0] == PackageManager.PERMISSION_GRANTED) {
|
|
// 获得授权
|
|
startQrCode();
|
|
} else {
|
|
// 被禁止授权
|
|
Toast.makeText(WatchTVActivity.this, "请至权限中心打开本应用的相机访问权限", Toast.LENGTH_LONG).show();
|
|
}
|
|
break;
|
|
}
|
|
}
|
|
|
|
|
|
} |