package com.android.play;
import android.content.ContentValues;
import android.content.Intent;
import android.database.Cursor;
import android.graphics.Bitmap;
import android.graphics.drawable.Drawable;
import android.net.Uri;
import android.os.Bundle;
import android.os.Looper;
import android.support.design.widget.FloatingActionButton;
import android.support.design.widget.Snackbar;
import android.support.v4.app.Fragment;
import android.support.v4.app.FragmentPagerAdapter;
import android.support.v4.view.ViewPager;
import android.util.Log;
import android.view.View;
import android.support.design.widget.NavigationView;
import android.support.v4.view.GravityCompat;
import android.support.v4.widget.DrawerLayout;
import android.support.v7.app.ActionBarDrawerToggle;
import android.support.v7.app.AppCompatActivity;
import android.support.v7.widget.Toolbar;
import android.view.Menu;
import android.view.MenuItem;
import android.widget.ImageButton;
import android.widget.ImageView;
import android.widget.LinearLayout;
import android.widget.TextView;
import android.widget.Toast;
import com.android.entity.Constant;
import com.android.entity.MusicMessage;
import com.android.entity.PlayMessage;
import com.squareup.picasso.Picasso;
import com.squareup.picasso.Target;
import java.io.File;
import java.util.ArrayList;
import java.util.List;
public class MainActivity extends AppCompatActivity
implements NavigationView.OnNavigationItemSelectedListener,View.OnClickListener {
private String TAG = Constant.TAG;
private int REQUEST_CODE = 1000;
private TextView mName;
private TextView mEmail;
private ImageView mHeadImage;
private View mHeadLayout;
private NavigationView navigationView;
private ViewPager mViewPager;
private FragmentPagerAdapter mAdapter;
private List<android.support.v4.app.Fragment> mFragments;
private LinearLayout mTabHome;
private LinearLayout mTabHot;
private LinearLayout mTabFind;
private ImageButton mImageHome;
private ImageButton mImageHot;
private ImageButton mImageFind;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
setSupportActionBar(toolbar);
FloatingActionButton fab = (FloatingActionButton) findViewById(R.id.fab);
if(fab != null) {
fab.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Snackbar.make(view, "Replace with your own action", Snackbar.LENGTH_LONG)
.setAction("Action", null).show();
//getVideoListFiles(new File("/sdcard"));
}
});
}
fab.setVisibility(View.GONE);
DrawerLayout drawer = (DrawerLayout) findViewById(R.id.drawer_layout);
ActionBarDrawerToggle toggle = new ActionBarDrawerToggle(
this, drawer, toolbar, R.string.navigation_drawer_open, R.string.navigation_drawer_close);
drawer.setDrawerListener(toggle);
toggle.syncState();
navigationView = (NavigationView) findViewById(R.id.nav_view);
navigationView.setNavigationItemSelectedListener(this);
initView();
initListener();
setSelect(1);
if(mHeadLayout != null) {
mHeadLayout.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent authIntent = new Intent();
authIntent.setClass(getApplicationContext(), AuthQQActivity.class);
startActivityForResult(authIntent, REQUEST_CODE);
}
});
}
new Thread() {
@Override
public void run() {
super.run();
Log.i(TAG, "====load resources about video music ==");
clearAll();
getMusicResoureFromDB();
getVideoResoureFromDB();
}
}.start();
}
private void initView(){
mHeadLayout = navigationView.getHeaderView(0);
mName = (TextView) mHeadLayout.findViewById(R.id.tv_main_name);
mEmail = (TextView) mHeadLayout.findViewById(R.id.tv_main_email);
mHeadImage = (ImageView) mHeadLayout.findViewById(R.id.im_main_head);
mViewPager = (ViewPager) findViewById(R.id.viewpager_home);
mTabFind = (LinearLayout) findViewById(R.id.tab_find_layout);
mTabHome = (LinearLayout) findViewById(R.id.tab_home_layout);
mTabHot = (LinearLayout) findViewById(R.id.tab_hot_layout);
mImageFind = (ImageButton) findViewById(R.id.imb_tab_find);
mImageHome = (ImageButton) findViewById(R.id.imb_tab_home);
mImageHot = (ImageButton) findViewById(R.id.imb_tab_hot);
mFragments = new ArrayList<Fragment>();
Fragment mTab1 = new HotPagerFragment();
Fragment mTab2 = new HomePagerFragment();
Fragment mTab3 = new FindPagerFragment();
mFragments.add(mTab1);
mFragments.add(mTab2);
mFragments.add(mTab3);
mAdapter = new FragmentPagerAdapter(getSupportFragmentManager()) {
@Override
public Fragment getItem(int position) {
return mFragments.get(position);
}
@Override
public int getCount() {
return mFragments.size();
}
};
mViewPager.setAdapter(mAdapter);
}
private void initListener(){
mTabHot.setOnClickListener(this);
mTabHome.setOnClickListener(this);
mTabFind.setOnClickListener(this);
mViewPager.setOnPageChangeListener(new ViewPager.OnPageChangeListener() {
@Override
public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) {
}
@Override
public void onPageSelected(int position) {
int currentItem = mViewPager.getCurrentItem();
resetImages();
switch (currentItem){
case 0:
mImageHot.setImageResource(R.drawable.tab_hot_select);
break;
case 1:
mImageHome.setImageResource(R.drawable.tab_home_selected);
break;
case 2:
mImageFind.setImageResource(R.drawable.tab_find_selected);
break;
}
}
@Override
public void onPageScrollStateChanged(int state) {
}
});
}
@Override
public void onBackPressed() {
DrawerLayout drawer = (DrawerLayout) findViewById(R.id.drawer_layout);
if (drawer.isDrawerOpen(GravityCompat.START)) {
drawer.closeDrawer(GravityCompat.START);
} else {
super.onBackPressed();
}
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.main, menu);
return true;
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
// Handle action bar item clicks here. The action bar will
// automatically handle clicks on the Home/Up button, so long
// as you specify a parent activity in AndroidManifest.xml.
int id = item.getItemId();
//noinspection SimplifiableIfStatement
if (id == R.id.action_settings) {
new Thread(){
@Override
public void run() {
super.run();
Log.i(TAG,"Main Activity : 更新 资源");
Looper.prepare();
deleteAllResource();
clearAll();
getMusicResoureFromDB();
getVideoResoureFromDB();
Looper.loop();
}
}.start();
return true;
}
return super.onOptionsItemSelected(item);
}
@SuppressWarnings("StatementWithEmptyBody")
@Override
public boolean onNavigationItemSelected(MenuItem item) {
// Handle navigation view item clicks here.
int id = item.getItemId();
if (id == R.id.nav_camera) {
// Handle the camera action
Intent intent = new Intent();
intent.putExtra("isFirst", true);
intent.setClass(this,MusicListActivity.class);
//intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
startActivity(intent);
} else if (id == R.id.nav_gallery) {
Intent video = new Intent();
video.setClass(this, VideoListActivity.class);
video.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
startActivity(video);
} else if (id == R.id.nav_manage) {
Intent settings = new Intent();
settings.setClass(this, SettingsActivity.class);
startActivity(settings);
} else if (id == R.id.nav_share) {
}
DrawerLayout drawer = (DrawerLayout) findViewById(R.id.drawer_layout);
drawer.closeDrawer(GravityCompat.START);
return true;
}
//////////////////////////////////////fenghaitao add codes////////////////////////
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
Log.i(TAG,"onActivityResult data : "+ data.toString());
if(requestCode == REQUEST_CODE){
String name = data.getStringExtra("name");
String imageUrl = data.getStringExtra("image");
Log.i(TAG,"onActivityResult name : "+ name +" , image url : "+imageUrl );
mName.setText(name);
Picasso.with(getApplicationContext()).load(imageUrl).into(target);
}
}
private Target target = new Target() {
@Override
public void onBitmapLoaded(Bitmap bitmap, Picasso.LoadedFrom from) {
bitmap = Constant.toRoundCorner(bitmap,2);
mHeadImage.setImageBitmap(bitmap);
}
@Override
public void onBitmapFailed(Drawable errorDrawable) {
}
@Override
public void onPrepareLoad(Drawable placeHolderDrawable) {
}
};
public void clearAll() {
Constant.musicList.clear();
Constant.mediaList.clear();
Constant.playList.clear();
}
public void getMusicResoureFromDB() {
Uri uri = Uri.parse("content://com.vanzo.database.musicprovider/query");
String[] columnnew = new String []{
Constant.TABLE_COLUMN_NAME,
Constant.TABLE_COLUMN_ARTIST,
Constant.TABLE_COLUMN_PATH,
Constant.TABLE_COLUMN_DURATION,
Constant.TABLE_COLUMN_SIZE};
Cursor mMusicCursor = getContentResolver().query(uri, columnnew, null, null, null);
Log.i(TAG,"=======do getMusic==mMusicCursor="+mMusicCursor);
if (mMusicCursor != null && mMusicCursor.getCount() == 0 ) {
Log.i(TAG, "==getMusicResource==");
getAllMusic();
}
if (mMusicCursor != null && mMusicCursor.getCount() > 0) {
for (mMusicCursor.moveToFirst(); !mMusicCursor.isAfterLast(); mMusicCursor.moveToNext()) {
Log.i(TAG, "===add music message ====name=" + mMusicCursor.getString(0) + " ,====path=" + mMusicCursor.getString(2));
MusicMessage musicMessage = new MusicMessage();
musicMessage.setmName(mMusicCursor.getString(0));
musicMessage.setArtist(mMusicCursor.getString(1));
musicMessage.setPath(mMusicCursor.getString(2));
musicMessage.setDuration(mMusicCursor.getInt(3));
musicMessage.setSize(mMusicCursor.getLong(4));
Constant.musicList.add(musicMessage);
}
}
if(mMusicCursor !=null)
mMusicCursor.close();
}
public void getVideoResoureFromDB() {
Uri videoUri = Uri.parse("content://com.vanzo.database.videoprovider/query");
String[] videoCloumn = new String[]{Constant.TABLE_COLUMN_NAME,
Constant.TABLE_COLUMN_PATH,
Constant.TABLE_COLUMN_DURATION,
Constant.TABLE_COLUMN_SIZE};
Cursor mVieoCursor = getContentResolver().query(videoUri, videoCloumn, null, null, null);
Log.i(TAG, "=========do get videos==mVieoCursor="+mVieoCursor);
if (mVieoCursor != null && mVieoCursor.getCount() == 0 ) {
Log.i(TAG, "====getVideoResource===");
getAllVideoResources();
}
if (mVieoCursor != null && mVieoCursor.getCount() > 0) {
for (mVieoCursor.moveToFirst(); !mVieoCursor.isAfterLast(); mVieoCursor.moveToNext()) {
Log.i(TAG, "======add video message==name=" + mVieoCursor.getString(0) + " ,===path=" + mVieoCursor.getString(1));
PlayMessage videoMessage = new PlayMessage();
videoMessage.setName(mVieoCursor.getString(0));
videoMessage.setPath(mVieoCursor.getString(1));
videoMessage.setDuration(mVieoCursor.getInt(2));
videoMessage.setSize(mVieoCursor.getLong(3));
Constant.mediaList.add(videoMessage);
}
}
if(mVieoCursor!=null)
mVieoCursor.close();
}
public void getAllMusic() {
Cursor cursor = getContentResolver().query(Constant.uri_music,
new String[]{Constant.mName, Constant.artist, Constant.path, Constant.duration, Constant.size}, null, null, null);
if (cursor != null && cursor.getCount() > 0) {
for (cursor.moveToFirst(); !cursor.isAfterLast(); cursor.moveToNext()) {
//小于30秒 不插入音乐列表
if(Integer.valueOf(cursor.getString(3)) < 30*1000){
continue;
}
Log.i(TAG, "========getALLMusic ===name==" + cursor.getString(0));
ContentValues values = new ContentValues();
values.put(Constant.TABLE_COLUMN_NAME, cursor.getString(0));
values.put(Constant.TABLE_COLUMN_ARTIST, cursor.getString(1));
values.put(Constant.TABLE_COLUMN_PATH, cursor.getString(2));
values.put(Constant.TABLE_COLUMN_DURATION, cursor.getInt(3));
values.put(Constant.TABLE_COLUMN_SIZE, cursor.getLong(4));
Uri uri = Uri.parse("content://com.vanzo.database.musicprovider/insert");
Log.i(TAG,"=======music provider class===");
getContentResolver().insert(uri, values);
//add music list array
MusicMessage musicMessage = new MusicMessage();
musicMessage.setmName(cursor.getString(0));
musicMessage.setArtist(cursor.getString(1));
musicMessage.setPath(cursor.getString(2));
musicMessage.setDuration(cursor.getInt(3));
musicMessage.setSize(cursor.getLong(4));
Constant.musicList.add(musicMessage);
}
}
if(cursor!=null)
cursor.close();
}
public void getAllVideoResources() {
Cursor cursor = getContentResolver().query(Constant.uri_play,
new String[]{Constant.pName, Constant.path_play, Constant.duration_play, Constant.size_play}, null, null, null);
if (cursor != null && cursor.getCount() > 0) {
for (cursor.moveToFirst(); !cursor.isAfterLast(); cursor.moveToNext()) {
String path = cursor.getString(1);
Log.i(TAG, "==getAllVideoRes===name=" + path);
if(path.substring(path.length()-".mp4".length()).equals(".mp4")
|| path.substring(path.length()-".3gp".length()).equals(".3gp")
|| path.substring(path.length()-".mkv".length()).equals(".mkv")
|| path.substring(path.length()-".avi".length()).equals(".avi")){
ContentValues values = new ContentValues();
values.put(Constant.TABLE_COLUMN_NAME, cursor.getString(0));
values.put(Constant.TABLE_COLUMN_PATH, cursor.getString(1));
values.put(Constant.TABLE_COLUMN_DURATION, cursor.getInt(2));
values.put(Constant.TABLE_COLUMN_SIZE, cursor.getLong(3));
Uri uri = Uri.parse("content://com.vanzo.database.videoprovider/insert");
Log.i(TAG,"=======video provider class ==");
getContentResolver().insert(uri, values);
//add video to list array
PlayMessage videoMessage = new PlayMessage();
videoMessage.setName(cursor.getString(0));
videoMessage.setPath(cursor.getString(1));
videoMessage.setDuration(cursor.getInt(2));
videoMessage.setSize(cursor.getLong(3));
Constant.mediaList.add(videoMessage);
}
}
}
if(cursor!=null)
cursor.close();
}
@Override
public void onStart() {
super.onStart();
}
@Override
public void onStop() {
super.onStop();
}
private void getVideoListFiles(File file){
File [] files = file.listFiles();
if(files == null){
return ;
}
for (File mFile : files){
if(mFile.isDirectory()){
getVideoListFiles(mFile);
}else if(mFile.isFile()) {
if(mFile.getPath().substring(mFile.getPath().length()-".mp4".length()).equals(".mp4")
|| mFile.getPath().substring(mFile.getPath().length()-".avi".length()).equals(".avi")){
Log.i(TAG, " MainActivity : getVideoListFiles , " + mFile.getAbsolutePath());
Log.i(TAG, " MainActivity : getVideoListFiles , " + mFile.getPath());
Log.i(TAG, " MainActivity : getVideoListFiles , " + mFile.getName());
Log.i(TAG, " MainActivity : getVideoListFiles , " + mFile.length());
Log.i(TAG, " MainActivity : getVideoListFiles , " + mFile.getFreeSpace());
Log.i(TAG, " MainActivity : getVideoListFiles , " + mFile.toURI());
}
}
}
}
private void deleteAllResource(){
Uri videoUri = Uri.parse("content://com.vanzo.database.videoprovider/delete");
int result = getContentResolver().delete(videoUri, null, null);
Log.i(TAG, "MainActivity; deleteAllResource : result = "+result);
if(result != -1){
Toast.makeText(getApplicationContext(), "视频删除成功", Toast.LENGTH_SHORT).show();
}
Uri uri = Uri.parse("content://com.vanzo.database.musicprovider/delete");
int resultMusic = getContentResolver().delete(uri, null, null);
if(resultMusic != -1){
Toast.makeText(getApplicationContext(), "音乐删除成功" , Toast.LENGTH_SHORT).show();
}
}
@Override
public void onClick(View v) {
switch (v.getId()){
case R.id.tab_hot_layout:
setSelect(0);
break;
case R.id.tab_home_layout:
setSelect(1);
break;
case R.id.tab_find_layout:
setSelect(2);
break;
}
}
private void resetImages() {
mImageFind.setImageResource(R.drawable.tab_find_normal);
mImageHot.setImageResource(R.drawable.tab_hot_normal);
mImageHome.setImageResource(R.drawable.tab_home_normal);
}
private void setSelect(int i){
resetImages();
switch (i){
case 0:
mImageHot.setImageResource(R.drawable.tab_hot_select);
break;
case 1:
mImageHome.setImageResource(R.drawable.tab_home_selected);
break;
case 2:
mImageFind.setImageResource(R.drawable.tab_find_selected);
break;
}
mViewPager.setCurrentItem(i);
}
}