Android Open Source - Music-Share-Android Query And Share Music Info






From Project

Back to project page Music-Share-Android.

License

The source code is released under:

GNU General Public License

If you think the Android project Music-Share-Android listed in this page is inappropriate, such as containing malicious code/tools or violating the copyright, please email info at java2s dot com, thanks.

Java Source Code

package com.paperairplane.music.share;
/*from w  ww . jav a 2 s .  co  m*/
import java.io.File;

import android.content.Context;
import android.content.Intent;
import android.net.Uri;
import android.os.Bundle;
import android.os.Handler;
import android.os.Message;

import com.paperairplane.music.share.utils.MyLogger;
import com.paperairplane.music.share.utils.Utilities;

/**
 * ????????????????
 * 
 * @author Harry Chen (<a href="mailto:chenshengqi1@gmail.com">Harry Chen</a>)
 * @author Xavier Yao (<a href="mailto:xavieryao@me.com">Xavier Yao</a>)
 * @see <a
 *      href="http://www.github.com/PaperAirPlane-Dev-Team/Music-Share-Android">Our
 *      GitHub</a>
 */
class QueryAndShareMusicInfo implements Runnable {
  private MusicData mMusic;
  private Context mContext;
  private Handler mHandler;
  private String mArtworkPath;

  @Override
  /**
   * ????,??????????????
   */
  public void run() {
    try {
      mMusic = Utilities
          .getMusicAndArtworkUrlFromLastfm(mMusic, mContext);
    } catch (Exception e) {
      e.printStackTrace();
    }
    if (mMusic == null || mMusic.getMusicUrl() == null) {
      mMusic = Utilities.getMusicAndArtworkUrlFromDouban(mMusic,
          mContext, mHandler);
    }
    String content = genContent();
    String artworkLocalUrl = null;

    try {
      long albumId = mMusic.getAlbumId();
      boolean flag = (albumId != Consts.NULL)
          && (Utilities.getLocalArtwork(mContext, albumId, 10, 10) != null);
      MyLogger.d(Consts.DEBUG_TAG, "????????????" + flag);
      if (flag) {
        // ??????????1X1??????
        // ???????????????
        Utilities
            .saveFile(Utilities.getLocalArtwork(mContext, albumId,
                300, 300),
                mMusic.getAlbumId() + "_" + mMusic.getArtist()
                    + ".jpg", mArtworkPath);
        artworkLocalUrl = mArtworkPath + mMusic.getAlbumId() + "_"
            + mMusic.getArtist() + ".jpg";
        MyLogger.d(Consts.DEBUG_TAG, "??????????????");
      } else {
        artworkLocalUrl = mArtworkPath
            + Utilities.getArtwork(mMusic.getArtworkNetUrl(),
                mMusic.getTitle(), mMusic.getArtist(),
                mArtworkPath);
      }
    } catch (Exception e) {
      e.printStackTrace();
    }
    mMusic.setArtworkLocalUrl(artworkLocalUrl);

    String type = "text/plain";

    Intent intent = new Intent(Intent.ACTION_SEND);
    if (artworkLocalUrl != null) {
      intent.putExtra(Intent.EXTRA_STREAM,
          Uri.fromFile(new File(artworkLocalUrl)));
      type = "image/*";
    }
    intent.setType(type);
    intent.putExtra(Intent.EXTRA_SUBJECT,
        mContext.getString(R.string.app_name));
    intent.putExtra(Intent.EXTRA_TEXT, content);
    intent.putExtra("sms_body", intent.getStringExtra(Intent.EXTRA_TEXT));
    Bundle bundle = new Bundle();
    bundle.putString("artworkUrl", mMusic.getArtworkNetUrl());
    bundle.putString("fileName", artworkLocalUrl);
    bundle.putString("annotation", mMusic.toJsonString());
    intent.putExtras(bundle);
    Message m = mHandler.obtainMessage(Consts.Status.MUSIC_INFO_FETCHED);
    m.obj = (Object) intent;
    m.sendToTarget();
  }

  /**
   * ?????????
   * 
   * @param info
   *            ???????????
   * @return ?????
   */
  private String genContent() {
    boolean isSingle = ((mMusic.getVersion() != null) && mMusic
        .getVersion().equals(mContext.getString(R.string.single)));
    String content = mContext.getString(R.string.share_by)
        + " "
        + mMusic.getArtist()
        + " "
        + (isSingle ? mContext.getString(R.string.music_single)
            : mContext.getString(R.string.music_artist))
        + " "
        + mMusic.getTitle()
        + " "
        + (isSingle ? "" : mContext.getString(R.string.music_album)
            + " " + mMusic.getAlbum() + " ")
        + mContext.getString(R.string.before_url)
        + mMusic.getMusicUrl() + " ";
    return content;
  }

  /**
   * ????
   * 
   * @param title
   *            ?????
   * @param artist
   *            ???
   * @param album
   *            ??
   * @param albumId
   *            ??ID
   * @param context
   *            App???
   * @param handler
   *            ??Handler
   */
  public QueryAndShareMusicInfo(MusicData music, Context context,
      Handler handler) {
    this.mMusic = music;
    mContext = context;
    mHandler = handler;
    mArtworkPath = context.getExternalCacheDir().getAbsolutePath()
        + "/.artworkCache/";
  }

}




Java Source Code List

android.net.http.SslError.java
com.paperairplane.music.share.AtSuggestionActivity.java
com.paperairplane.music.share.Consts.java
com.paperairplane.music.share.FeedbackMessage.java
com.paperairplane.music.share.Main.java
com.paperairplane.music.share.MusicData.java
com.paperairplane.music.share.MusicListAdapter.java
com.paperairplane.music.share.QueryAndShareMusicInfo.java
com.paperairplane.music.share.Receiver.java
com.paperairplane.music.share.SnsHelper.java
com.paperairplane.music.share.cache.ImageLoader.java
com.paperairplane.music.share.cache.MemoryCache.java
com.paperairplane.music.share.dialogs.AboutDialogFragment.java
com.paperairplane.music.share.dialogs.AbsDialogFragment.java
com.paperairplane.music.share.dialogs.AuthManagerDialogFragment.java
com.paperairplane.music.share.dialogs.BackgroundChooserDialogFragment.java
com.paperairplane.music.share.dialogs.ChangeColorDialogFragment.java
com.paperairplane.music.share.dialogs.EmptyDialogFragment.java
com.paperairplane.music.share.dialogs.FeedbackDialogFragment.java
com.paperairplane.music.share.dialogs.SearchDialogFragment.java
com.paperairplane.music.share.dialogs.SendWeiboDialogFragment.java
com.paperairplane.music.share.dialogs.ThankDialogFragment.java
com.paperairplane.music.share.utils.CrashHandler.java
com.paperairplane.music.share.utils.HanziToPinyin.java
com.paperairplane.music.share.utils.HttpQuestHandler.java
com.paperairplane.music.share.utils.IntentResolver.java
com.paperairplane.music.share.utils.MyLogger.java
com.paperairplane.music.share.utils.ShakeDetector.java
com.paperairplane.music.share.utils.Utilities.java
com.paperairplane.music.share.utils.lastfm.Album.java
com.paperairplane.music.share.utils.lastfm.Artist.java
com.paperairplane.music.share.utils.lastfm.Caller.java
com.paperairplane.music.share.utils.lastfm.DomElement.java
com.paperairplane.music.share.utils.lastfm.ImageHolder.java
com.paperairplane.music.share.utils.lastfm.ImageSize.java
com.paperairplane.music.share.utils.lastfm.Image.java
com.paperairplane.music.share.utils.lastfm.ItemFactoryBuilder.java
com.paperairplane.music.share.utils.lastfm.ItemFactory.java
com.paperairplane.music.share.utils.lastfm.MapUtilities.java
com.paperairplane.music.share.utils.lastfm.MusicEntry.java
com.paperairplane.music.share.utils.lastfm.PaginatedResult.java
com.paperairplane.music.share.utils.lastfm.ResponseBuilder.java
com.paperairplane.music.share.utils.lastfm.Result.java
com.paperairplane.music.share.utils.lastfm.StringUtilities.java
com.paperairplane.music.share.utils.lastfm.Track.java
com.weibo.sdk.android.Oauth2AccessToken.java
com.weibo.sdk.android.WeiboAuthListener.java
com.weibo.sdk.android.WeiboDialogError.java
com.weibo.sdk.android.WeiboDialog.java
com.weibo.sdk.android.WeiboException.java
com.weibo.sdk.android.WeiboParameters.java
com.weibo.sdk.android.Weibo.java
com.weibo.sdk.android.api.AccountAPI.java
com.weibo.sdk.android.api.ActivityInvokeAPI.java
com.weibo.sdk.android.api.CommentsAPI.java
com.weibo.sdk.android.api.CommonAPI.java
com.weibo.sdk.android.api.FavoritesAPI.java
com.weibo.sdk.android.api.FriendshipsAPI.java
com.weibo.sdk.android.api.PlaceAPI.java
com.weibo.sdk.android.api.RegisterAPI.java
com.weibo.sdk.android.api.SearchAPI.java
com.weibo.sdk.android.api.ShortUrlAPI.java
com.weibo.sdk.android.api.StatusesAPI.java
com.weibo.sdk.android.api.SuggestionsAPI.java
com.weibo.sdk.android.api.TagsAPI.java
com.weibo.sdk.android.api.TrendsAPI.java
com.weibo.sdk.android.api.UsersAPI.java
com.weibo.sdk.android.api.WeiboAPI.java
com.weibo.sdk.android.net.AsyncWeiboRunner.java
com.weibo.sdk.android.net.HttpManager.java
com.weibo.sdk.android.net.NetStateManager.java
com.weibo.sdk.android.net.RequestListener.java
com.weibo.sdk.android.sso.SsoHandler.java
com.weibo.sdk.android.util.BitmapHelper.java
com.weibo.sdk.android.util.Utility.java