package moe.chionlab.wechatmomentstat.gui; import android.content.ComponentName; import android.content.Intent; import android.graphics.Bitmap; import android.graphics.BitmapFactory; import android.graphics.Canvas; import android.graphics.Color; import android.graphics.Paint; import android.net.Uri; import android.support.v4.app.NavUtils; import android.support.v7.app.AppCompatActivity; import android.os.Bundle; import android.util.Log; import android.view.Menu; import android.view.MenuInflater; import android.view.MenuItem; import android.view.View; import android.widget.Button; import android.widget.TextView; import java.io.File; import java.io.FileNotFoundException; import java.io.FileOutputStream; import java.text.SimpleDateFormat; import java.util.Date; import java.util.Locale; import moe.chionlab.wechatmomentstat.Config; import moe.chionlab.wechatmomentstat.Model.UserSnsInfo; import moe.chionlab.wechatmomentstat.R; import moe.chionlab.wechatmomentstat.SnsStat; import moe.chionlab.wechatmomentstat.common.Share; public class MomentStatActivity extends AppCompatActivity { TextView mainTextView; SnsStat snsStat; @Override public boolean onOptionsItemSelected(MenuItem item) { switch (item.getItemId()) { case android.R.id.home: NavUtils.navigateUpFromSameTask(this); return true; case R.id.share_menu_btn: shareToTimeLine(); return true; } return super.onOptionsItemSelected(item); } @Override public boolean onCreateOptionsMenu(Menu menu) { MenuInflater inflater = getMenuInflater(); inflater.inflate(R.menu.moment_stat_menu, menu); return true; } @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_moment_stat); snsStat = Share.snsData; mainTextView = (TextView)findViewById(R.id.moment_stat_main_textview); showMomentStat(); getSupportActionBar().setDisplayHomeAsUpEnabled(true); ((Button)findViewById(R.id.export_moment_btn)).setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { Intent intent = new Intent(MomentStatActivity.this, MomentListActivity.class); startActivity(intent); } }); ((Button)findViewById(R.id.share_btn)).setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { shareToTimeLine(); } }); } protected void showMomentStat() { UserSnsInfo mySnsInfo = snsStat.getUserSnsInfo(snsStat.currentUserId); setTitle(String.format(getString(R.string.stat_title), mySnsInfo.userName)); String showText = String.format(getString(R.string.from_date), new SimpleDateFormat("yyyy-MM-dd", Locale.getDefault()).format(new Date(snsStat.earliestTimestamp * 1000))) + "\n"; showText += String.format(getString(R.string.my_sent_moments), mySnsInfo.snsList.size()) + "\n"; showText += String.format(getString(R.string.my_sent_photos), mySnsInfo.photoNumbers) + "\n"; showText += String.format(getString(R.string.my_like_numbers), mySnsInfo.likeCount) + "\n"; showText += String.format(getString(R.string.my_liked_numbers), mySnsInfo.likedCount) + "\n"; showText += String.format(getString(R.string.my_sent_comments), mySnsInfo.sentCommentCount) + "\n"; showText += String.format(getString(R.string.my_received_comments), mySnsInfo.receivedCommentCount) + "\n"; showText += String.format(getString(R.string.my_replied_comments), mySnsInfo.repliedCommentCount) + "\n"; showText += "\n"; showText += getString(R.string.sent_moment_rank) + "\n"; for (int i=0;i<5;i++) { try { UserSnsInfo userSnsInfo = snsStat.momentRank.get(i); showText += userSnsInfo.userName; showText += "(" + userSnsInfo.snsList.size() + ")\n"; } catch (Exception e) { } } showText += "\n"; showText += getString(R.string.sent_photo_rank) + "\n"; for (int i=0;i<5;i++) { try { UserSnsInfo userSnsInfo = snsStat.photoRank.get(i); showText += userSnsInfo.userName; showText += "(" + userSnsInfo.photoNumbers + ")\n"; } catch (Exception e) { } } showText += "\n"; showText += getString(R.string.like_rank) + "\n"; for (int i=0;i<5;i++) { try { UserSnsInfo userSnsInfo = snsStat.likeRank.get(i); showText += userSnsInfo.userName; showText += "(" + userSnsInfo.likeCount + ")\n"; } catch (Exception e) { } } showText += "\n"; showText += getString(R.string.liked_rank) + "\n"; for (int i=0;i<5;i++) { try { UserSnsInfo userSnsInfo = snsStat.likedRank.get(i); showText += userSnsInfo.userName; showText += "(" + userSnsInfo.likedCount + ")\n"; } catch (Exception e) { } } showText += "\n"; showText += getString(R.string.sent_comment_rank) + "\n"; for (int i=0;i<5;i++) { try { UserSnsInfo userSnsInfo = snsStat.sentCommentRank.get(i); showText += userSnsInfo.userName; showText += "(" + userSnsInfo.sentCommentCount + ")\n"; } catch (Exception e) { } } showText += "\n"; showText += getString(R.string.received_comment_rank) + "\n"; for (int i=0;i<5;i++) { try { UserSnsInfo userSnsInfo = snsStat.receivedCommentRank.get(i); showText += userSnsInfo.userName; showText += "(" + userSnsInfo.receivedCommentCount + ")\n"; } catch (Exception e) { } } showText += "\n"; showText += getString(R.string.cold_rank) + "\n"; for (int i=0;i<5;i++) { try { UserSnsInfo userSnsInfo = snsStat.coldRank.get(i); showText += userSnsInfo.userName; showText += String.format(getString(R.string.comment_details), userSnsInfo.sentCommentCount, userSnsInfo.repliedCommentCount) + "\n"; } catch (Exception e) { } } mainTextView.setText(showText); } public void shareToTimeLine() { generateShareImage(); File file = new File(Config.EXT_DIR + "/share_image.jpg"); try { Intent intent = new Intent(); ComponentName comp = new ComponentName("com.tencent.mm", "com.tencent.mm.ui.tools.ShareToTimeLineUI"); intent.setComponent(comp); intent.setAction("android.intent.action.SEND"); intent.setType("image/*"); //intent.setFlags(0x3000001); intent.putExtra(Intent.EXTRA_STREAM, Uri.fromFile(file)); startActivity(intent); } catch (Exception e) { Log.e("wechatmomentstat", "exception", e); } } protected void generateShareImage() { Bitmap src = BitmapFactory.decodeResource(getResources(), R.drawable.empty_background); Bitmap dest = Bitmap.createBitmap(src.getWidth(), src.getHeight(), Bitmap.Config.ARGB_8888); String text = mainTextView.getText().toString(); Canvas cs = new Canvas(dest); Paint tPaint = new Paint(); tPaint.setTextSize(50); tPaint.setColor(Color.BLUE); tPaint.setStyle(Paint.Style.FILL); cs.drawBitmap(src, 0f, 0f, null); float y_coor = 60; String[] lineArray = text.split("\n"); for (int i=0;i<lineArray.length;i++) { cs.drawText(lineArray[i],30, y_coor, tPaint); y_coor += 60; } cs.drawText(getString(R.string.share_suffix), 60, y_coor + 60, tPaint); try { dest.compress(Bitmap.CompressFormat.JPEG, 90, new FileOutputStream(new File(Config.EXT_DIR + "/share_image.jpg"))); } catch (FileNotFoundException e) { } } }