android mssql,我也有微信朋友圈了 Android实现

本文实例分享了一个简单的朋友圈程序,包含了朋友圈的列表实现,视频的录制、预览与上传,图片可选择拍照,供大家参考,具体内容如下

b72c09144c9a1fae2fc4910ba5271987.png

FriendsListActivity  代码如下

public class FriendsListActivity extends BaseActivity implements OnRefreshListener, PostListener {

private InteractionAdapter mAdapter;

private PullToRefreshListView mRefreshListView;

private View mFooter;

private Context mContext;

private Button btnToPost;

protected int mPage = 0;

private boolean isRefreshing = false;

@Override

protected void onCreate(Bundle savedInstanceState) {

// TODO Auto-generated method stub

super.onCreate(savedInstanceState);

setContentView(R.layout.friends_list);

mContext=getApplicationContext();

mAdapter = new InteractionAdapter(mContext);

mAdapter.setListener(this);

btnToPost=(Button) findViewById(R.id.btn_topost);

mRefreshListView = (PullToRefreshListView) findViewById(R.id.friends_list);

FriendsApi.getFriendsList(mContext, mCallBack);

mRefreshListView.setOnRefreshListener(this);

mFooter = LayoutInflater.from(mContext).inflate(R.layout.loading_footer, null);

// mRefreshListView.getRefreshableView().addFooterView(mFooter);

mRefreshListView.setAdapter(mAdapter);

// mRefreshListView.setOnLastItemVisibleListener(mLastListener);

// mRefreshListView.getRefreshableView().setDividerHeight(40);

btnToPost.setOnClickListener(new OnClickListener() {

@Override

public void onClick(View v) {

myPosts();

}

});

}

protected void myPosts() {

new AlertDialog.Builder(this).setItems(new String[]{"图片","视频","文字"}, new DialogInterface.OnClickListener() {

@Override

public void onClick(DialogInterface dialog, int which) {

Intent intent=new Intent();

switch (which) {

case 0:

intent.setClass(FriendsListActivity.this, CreatePostActivity.class);

break;

case 1:

intent.setClass(FriendsListActivity.this, RecorderActivity.class);

break;

case 2:

intent.setClass(FriendsListActivity.this, RecorderActivity.class);

break;

default:

break;

}

startActivity(intent);

}

}).show();

}

/**

* 查看更多操作

*/

@Override

public void show(Interaction interaction) {

}

@Override

public void delete(Interaction interaction) {

// TODO Auto-generated method stub

}

@Override

public void onRefresh(PullToRefreshBase refreshView) {

if (!isRefreshing) {

isRefreshing = true;

mPage = 0;

FriendsApi.getFriendsList(mContext, mCallBack);

}

}

protected NetCallBack mCallBack = new NetCallBack() {

public void friendslist(ArrayList friends) {

Log.i("friends size>>>>",friends.size()+"-------------");

mAdapter.setInteractions(friends);

// mRefreshListView.getLoadingLayoutProxy().setLastUpdatedLabel(null);

mRefreshListView.onRefreshComplete();

isRefreshing = false;

dismissLoading();

};

public void start() {

showLoading();

};

public void failed(String message) {

loadFailed();

};

};

@Override

public void play(Interaction interaction) {

Intent mIntent=new Intent();

mIntent.setClass(FriendsListActivity.this, RecorderPlayActivity.class);

Bundle data = new Bundle();

data.putString("path", interaction.videoPath);

mIntent.putExtras(data);

startActivity(mIntent);

}

}

布局文件 friends_list.xml

android:layout_width="match_parent"

android:layout_height="match_parent"

android:background="@color/backgroud_color" >

android:id="@+id/list_title"

android:layout_alignParentTop="true"

layout="@layout/list_title"/>

xmlns:app="http://schemas.android.com/apk/res-auto"

android:id="@+id/friends_list"

android:layout_width="match_parent"

android:layout_height="match_parent"

android:layout_margin="@dimen/padding_left"

android:divider="@android:color/transparent"

android:layout_below="@+id/list_title"

app:ptrOverScroll="false"

app:ptrHeaderTextColor="#ff666666"

app:ptrHeaderTextAppearance="@android:style/TextAppearance.Small"

app:ptrShowIndicator="false"/>

适配器 InteractionAdapter 对朋友圈列表进行数据填充

public class InteractionAdapter extends BaseAdapter implements OnClickListener {

private ArrayList interactions;

private Context mContext;

private FinalBitmap mFinal;

private BitmapDisplayConfig config;

private BitmapDisplayConfig imageConfig;

private PostListener listener;

public InteractionAdapter(Context context) {

mContext = context;

mFinal = FinalBitmap.create(mContext);

Bitmap bitmap = BitmapFactory.decodeResource(mContext.getResources(), R.drawable.user_avatar);

config = new BitmapDisplayConfig();

config.setAnimationType(BitmapDisplayConfig.AnimationType.fadeIn);

config.setLoadfailBitmap(bitmap);

config.setLoadfailBitmap(bitmap);

bitmap = BitmapFactory.decodeResource(mContext.getResources(), R.drawable.image_failed);

imageConfig = new BitmapDisplayConfig();

imageConfig.setAnimationType(BitmapDisplayConfig.AnimationType.fadeIn);

imageConfig.setLoadfailBitmap(bitmap);

imageConfig.setLoadfailBitmap(bitmap);

}

public void setListener(PostListener listener) {

this.listener = listener;

}

public void setInteractions(ArrayList interactions) {

this.interactions = interactions;

notifyDataSetChanged();

}

@Override

public int getCount() {

// TODO Auto-generated method stub

return interactions == null ? 0 : interactions.size();

}

@Override

public Object getItem(int position) {

// TODO Auto-generated method stub

return interactions.get(position);

}

@Override

public long getItemId(int position) {

// TODO Auto-generated method stub

return position;

}

@Override

public View getView(int position, View convertView, ViewGroup parent) {

// TODO Auto-generated method stub

ViewHolder holder = null;

if (convertView == null) {

convertView = LayoutInflater.from(mContext).inflate(R.layout.friend_list_item, null);

holder = new ViewHolder();

holder.avatar = (CircleImageView) convertView.findViewById(R.id.avatar);

holder.content = (TextView) convertView.findViewById(R.id.content);

holder.title = (TextView) convertView.findViewById(R.id.title);

holder.subtitle = (TextView) convertView.findViewById(R.id.subtitle);

holder.image = convertView.findViewById(R.id.image_layout);

holder.image0 = (ImageView) convertView.findViewById(R.id.image0);

holder.image1 = (ImageView) convertView.findViewById(R.id.image1);

holder.image2 = (ImageView) convertView.findViewById(R.id.image2);

holder.conments = (TextView) convertView.findViewById(R.id.conment_count);

holder.praises = (TextView) convertView.findViewById(R.id.parise_count);

holder.praised = (ImageView) convertView.findViewById(R.id.praise_icon);

holder.more = (TextView) convertView.findViewById(R.id.more);

holder.viewLayout=(LinearLayout) convertView.findViewById(R.id.view_layout);

holder.surfaceView=(SurfaceView) convertView.findViewById(R.id.surface_view_result);

holder.playButton=(ImageButton) convertView.findViewById(R.id.btn_play_result);

holder.audioLayout=(FrameLayout) convertView.findViewById(R.id.audio_layout);

convertView.setTag(holder);

} else {

holder = (ViewHolder) convertView.getTag();

}

Interaction interaction = interactions.get(position);

if (TextUtils.isEmpty(interaction.avatar)) {

holder.avatar.setImageBitmap(config.getLoadfailBitmap());

} else {

mFinal.display(holder.avatar, interaction.avatar, config);

}

holder.title.setText(interaction.name);

holder.subtitle.setText(interaction.subtitle);

holder.content.setText(interaction.content);

holder.conments.setText(String.valueOf(interaction.commentCount));

holder.praises.setText(String.valueOf(interaction.praiseCount));

int images = interaction.images == null ? 0 : interaction.images.size();

if (images > 0) {

holder.image.setVisibility(View.VISIBLE);

holder.audioLayout.setVisibility(View.GONE);

holder.image.setOnClickListener(this);

holder.image.setTag(interaction);

if (images <= 1) {

mFinal.display(holder.image0, interaction.images.get(0), imageConfig);

holder.image1.setImageBitmap(null);

holder.image2.setImageBitmap(null);

} else if (images <= 2) {

mFinal.display(holder.image0, interaction.images.get(0), imageConfig);

mFinal.display(holder.image1, interaction.images.get(1), imageConfig);

holder.image2.setImageBitmap(null);

} else {

mFinal.display(holder.image0, interaction.images.get(0), imageConfig);

mFinal.display(holder.image1, interaction.images.get(1), imageConfig);

mFinal.display(holder.image2, interaction.images.get(2), imageConfig);

}

} else if(interaction.videoPath!=null)

{

holder.image.setVisibility(View.GONE);

holder.playButton.setBackgroundResource(R.drawable.play1pressed);

holder.audioLayout.setVisibility(View.VISIBLE);

holder.playButton.setTag(interaction);

holder.playButton.setOnClickListener(this);

holder.surfaceView.setTag(interaction);

holder.surfaceView.setOnClickListener(this);

}else{

holder.viewLayout.setVisibility(View.GONE);

}

holder.more.setTag(interaction);

holder.more.setOnClickListener(this);

return convertView;

}

private class ViewHolder {

CircleImageView avatar;

TextView title;

TextView subtitle;

TextView content;

View image;

ImageView image0;

ImageView image1;

ImageView image2;

TextView conments;

TextView praises;

ImageView praised;

View delete;

TextView more;

SurfaceView surfaceView;

ImageButton playButton;

FrameLayout audioLayout;

LinearLayout viewLayout;

}

@Override

public void onClick(View v) {

int id = v.getId();

if (id == R.id.btn_play_result) {

Interaction interaction = (Interaction) v.getTag();

}else if (id == R.id.surface_view_result) {

if (this.listener != null) {

this.listener.play((Interaction) v.getTag());

}

}else if (id == R.id.more) {

if (this.listener != null) {

this.listener.show((Interaction) v.getTag());

}

} else if (id == R.id.image_layout) {

Intent intent = new Intent(mContext, MainActivity.class);

Bundle data = new Bundle();

Interaction interaction = (Interaction) v.getTag();

data.putStringArrayList("images", interaction.images);

intent.putExtras(data);

mContext.startActivity(intent);

}

}

public interface PostListener {

void show(Interaction interaction);

void delete(Interaction interaction);

void play(Interaction interaction);

}

e919f2909819061ceab225034efc1837.png

多图片选择实现代码

MultipleActivity

package com.yzl.xyb.friends;

import java.io.File;

import java.io.FilenameFilter;

import java.util.ArrayList;

import java.util.Arrays;

import java.util.HashSet;

import java.util.List;

import android.app.Activity;

import android.app.ProgressDialog;

import android.content.ContentResolver;

import android.content.Intent;

import android.database.Cursor;

import android.net.Uri;

import android.os.Bundle;

import android.os.Environment;

import android.os.Handler;

import android.provider.MediaStore;

import android.util.DisplayMetrics;

import android.util.Log;

import android.view.LayoutInflater;

import android.view.View;

import android.view.View.OnClickListener;

import android.view.ViewGroup.LayoutParams;

import android.view.WindowManager;

import android.widget.GridView;

import android.widget.PopupWindow.OnDismissListener;

import android.widget.RelativeLayout;

import android.widget.TextView;

import android.widget.Toast;

import com.yzl.xyb.friends.adapter.MyAdapter;

import com.yzl.xyb.friends.adapter.MyAdapter.SetCountListener;

import com.yzl.xyb.friends.picture.ListImageDirPopupWindow;

import com.yzl.xyb.friends.picture.ListImageDirPopupWindow.OnImageDirSelected;

import com.yzl.xyb.friends.util.ImageFloder;

/**

* 从相册选取图片

* 可以选择多张,最多可选9张

* 获取所有相册

* 确定:返回已选图片的路径

* @author hou

*

*/

public class MultipleActivity extends Activity implements OnImageDirSelected, SetCountListener{

private TextView selectCount;

private TextView selectPicture;

private TextView mChooseDir;

private ProgressDialog mProgressDialog;

public static final int KITKAT_LESS = 2;

/**

* 存储文件夹中的图片数量

*/

private int mPicsSize;

/**

* 图片数量最多的文件夹

*/

private File mImgDir;

/**

* 所有的图片

*/

private List mImgs;

private ArrayList pictures;

private GridView mGirdView;

private MyAdapter mAdapter;

/**

* 临时的辅助类,用于防止同一个文件夹的多次扫描

*/

private HashSet mDirPaths = new HashSet();

/**

* 扫描拿到所有的图片文件夹

*/

private List mImageFloders = new ArrayList();

private RelativeLayout mBottomLy;

int totalCount = 0;

private int mScreenHeight;

private ListImageDirPopupWindow mListImageDirPopupWindow;

private Handler mHandler = new Handler()

{

public void handleMessage(android.os.Message msg)

{

mProgressDialog.dismiss();

// 为View绑定数据

data2View();

// 初始化展示文件夹的popupWindw

initListDirPopupWindw();

}

};

@Override

protected void onCreate(Bundle savedInstanceState)

{

super.onCreate(savedInstanceState);

setContentView(R.layout.picture_selector);

getIntent().getExtras();

DisplayMetrics outMetrics = new DisplayMetrics();

getWindowManager().getDefaultDisplay().getMetrics(outMetrics);

mScreenHeight = outMetrics.heightPixels;

initView();

getImages();

initEvent();

}

/**

* 初始化View

*/

private void initView()

{

mGirdView = (GridView) findViewById(R.id.id_gridView);

mChooseDir = (TextView) findViewById(R.id.id_choose_dir);

selectCount = (TextView) findViewById(R.id.tv_select_count);

// allPhotoAlum = (TextView) findViewById(R.id.tv_photoAlum);

selectPicture= (TextView) findViewById(R.id.tv_sure);

mBottomLy = (RelativeLayout) findViewById(R.id.id_bottom_ly);

}

private void initEvent()

{

/**

* 为底部的布局设置点击事件,弹出popupWindow

*/

mBottomLy.setOnClickListener(new OnClickListener()

{

@Override

public void onClick(View v)

{

mListImageDirPopupWindow

.setAnimationStyle(R.style.anim_popup_dir);

mListImageDirPopupWindow.showAsDropDown(mBottomLy, 0, 0);

// 设置背景颜色变暗

WindowManager.LayoutParams lp = getWindow().getAttributes();

lp.alpha = .3f;

getWindow().setAttributes(lp);

}

});

selectPicture.setOnClickListener(new OnClickListener() {

@Override

public void onClick(View v) {

pictures=mAdapter.getSelectPath();

Log.i("选中的图片1>>>>>>",pictures.size()+"----------");

Intent intent=new Intent();

// intent.setClass(MultipleActivity.this, CreatePostActivity.class);

Bundle bundle=new Bundle();

bundle.putStringArrayList("PICTURES", pictures);

intent.putExtras(bundle);

// startActivityForResult(intent, KITKAT_LESS);

setResult(KITKAT_LESS, intent);

finish();

}

});

}

/**

* 为View绑定数据

*/

private void data2View()

{

if (mImgDir == null)

{

Toast.makeText(getApplicationContext(), "擦,一张图片没扫描到",

Toast.LENGTH_SHORT).show();

return;

}

mImgs = Arrays.asList(mImgDir.list());

/**

* 可以看到文件夹的路径和图片的路径分开保存,极大的减少了内存的消耗;

*/

mAdapter = new MyAdapter(getApplicationContext(), mImgs,

R.layout.grid_item, mImgDir.getAbsolutePath());

mAdapter.setCountListener(this);

mGirdView.setAdapter(mAdapter);

// allPictureCount.setText("共"+totalCount + "张");

};

/**

* 初始化展示文件夹的popupWindw

*/

private void initListDirPopupWindw()

{

mListImageDirPopupWindow = new ListImageDirPopupWindow(

LayoutParams.MATCH_PARENT, (int) (mScreenHeight * 1),

mImageFloders, LayoutInflater.from(getApplicationContext())

.inflate(R.layout.list_dir, null));

mListImageDirPopupWindow.setOnDismissListener(new OnDismissListener()

{

@Override

public void onDismiss()

{

// 设置背景颜色变暗

WindowManager.LayoutParams lp = getWindow().getAttributes();

lp.alpha = 1.0f;

getWindow().setAttributes(lp);

}

});

// 设置选择文件夹的回调

mListImageDirPopupWindow.setOnImageDirSelected(this);

}

/**

* 利用ContentProvider扫描手机中的图片,此方法在运行在子线程中 完成图片的扫描,最终获得jpg最多的那个文件夹

*/

private void getImages()

{

if (!Environment.getExternalStorageState().equals(

Environment.MEDIA_MOUNTED))

{

Toast.makeText(this, "暂无外部存储", Toast.LENGTH_SHORT).show();

return;

}

// 显示进度条

mProgressDialog = ProgressDialog.show(this, null, "正在加载...");

new Thread(new Runnable()

{

@Override

public void run()

{

String firstImage = null;

Uri mImageUri = MediaStore.Images.Media.EXTERNAL_CONTENT_URI;

ContentResolver mContentResolver = MultipleActivity.this

.getContentResolver();

// 只查询jpeg和png的图片

Cursor mCursor = mContentResolver.query(mImageUri, null,

MediaStore.Images.Media.MIME_TYPE + "=? or "

+ MediaStore.Images.Media.MIME_TYPE + "=?",

new String[] { "image/jpeg", "image/png" },

MediaStore.Images.Media.DATE_MODIFIED);

Log.e("TAG", mCursor.getCount() + "");

while (mCursor.moveToNext())

{

// 获取图片的路径

String path = mCursor.getString(mCursor

.getColumnIndex(MediaStore.Images.Media.DATA));

Log.e("TAG", path);

// 拿到第一张图片的路径

if (firstImage == null)

firstImage = path;

// 获取该图片的父路径名

File parentFile = new File(path).getParentFile();

if (parentFile == null)

continue;

String dirPath = parentFile.getAbsolutePath();

ImageFloder imageFloder = null;

// 利用一个HashSet防止多次扫描同一个文件夹(不加这个判断,图片多起来还是相当恐怖的~~)

if (mDirPaths.contains(dirPath))

{

continue;

} else

{

mDirPaths.add(dirPath);

// 初始化imageFloder

imageFloder = new ImageFloder();

imageFloder.setDir(dirPath);

imageFloder.setFirstImagePath(path);

}

int picSize = parentFile.list(new FilenameFilter()

{

@Override

public boolean accept(File dir, String filename)

{

if (filename.endsWith(".jpg")

|| filename.endsWith(".png")

|| filename.endsWith(".jpeg"))

return true;

return false;

}

}).length;

totalCount += picSize;

imageFloder.setCount(picSize);

mImageFloders.add(imageFloder);

if (picSize > mPicsSize)

{

mPicsSize = picSize;

mImgDir = parentFile;

}

}

mCursor.close();

// 扫描完成,辅助的HashSet也就可以释放内存了

mDirPaths = null;

// 通知Handler扫描图片完成

mHandler.sendEmptyMessage(0x110);

}

}).start();

}

@Override

public void selected(ImageFloder floder)

{

mImgDir = new File(floder.getDir());

mImgs = Arrays.asList(mImgDir.list(new FilenameFilter()

{

@Override

public boolean accept(File dir, String filename)

{

if (filename.endsWith(".jpg") || filename.endsWith(".png")

|| filename.endsWith(".jpeg"))

return true;

return false;

}

}));

/**

* 可以看到文件夹的路径和图片的路径分开保存,极大的减少了内存的消耗;

*/

mAdapter = new MyAdapter(getApplicationContext(), mImgs,

R.layout.grid_item, mImgDir.getAbsolutePath());

mAdapter.setCountListener(this);

mGirdView.setAdapter(mAdapter);

// mAdapter.notifyDataSetChanged();

// mImageCount.setText(floder.getCount() + "张");

mChooseDir.setText(floder.getName());

selectCount.setText("/9");

mListImageDirPopupWindow.dismiss();

}

@Override

public void doCount(int a) {

selectCount.setText(a+"/9");

}

}

385ec12b98a881e29567f88c38bfbce2.png

视频的录制与预览

package com.yzl.xyb.friends;

import android.annotation.SuppressLint;

import android.app.Activity;

import android.content.Intent;

import android.os.Bundle;

import android.os.Handler;

import android.os.Message;

import android.util.Log;

import android.view.MotionEvent;

import android.view.View;

import android.view.View.OnTouchListener;

import android.widget.Button;

import android.widget.Toast;

import com.yzl.xyb.friends.view.MovieRecorderView;

import com.yzl.xyb.friends.view.MovieRecorderView.OnRecordFinishListener;

/**

* 录制视频

* @author hou

*

*/

public class RecorderActivity extends Activity {

private MovieRecorderView mRecorderView;

private Button mShootBtn;

private boolean isFinish = true;

private String userId = "";

@Override

protected void onCreate(Bundle savedInstanceState) {

// TODO Auto-generated method stub

super.onCreate(savedInstanceState);

setContentView(R.layout.record_activity);

// userId=getIntent().getParcelableExtra("userId");

mRecorderView = (MovieRecorderView) findViewById(R.id.movieRecorderView);

mShootBtn = (Button) findViewById(R.id.shoot_button);

mShootBtn.setOnTouchListener(new OnTouchListener() {

@Override

public boolean onTouch(View v, MotionEvent event) {

if (event.getAction() == MotionEvent.ACTION_DOWN) {

mRecorderView.record(new OnRecordFinishListener() {

@Override

public void onRecordFinish() {

Log.i("MotionEvent>>>","ACTION_DOWN");

handler.sendEmptyMessage(1);

}

});

} else if (event.getAction() == MotionEvent.ACTION_UP) {

Log.i("MotionEvent>>>","ACTION_UP");

if (mRecorderView.getTimeCount() > 1)

handler.sendEmptyMessage(1);

else {

if (mRecorderView.getmVecordFile() != null)

mRecorderView.getmVecordFile().delete();

mRecorderView.stop();

Toast.makeText(RecorderActivity.this, "时间太短,录制失败", Toast.LENGTH_SHORT).show();

}

}

return true;

}

});

}

@Override

public void onResume() {

super.onResume();

isFinish = true;

}

@Override

public void onSaveInstanceState(Bundle outState) {

super.onSaveInstanceState(outState);

isFinish = false;

mRecorderView.stop();

}

@Override

public void onPause() {

super.onPause();

}

@Override

public void onDestroy() {

super.onDestroy();

}

@SuppressLint("HandlerLeak")

private Handler handler = new Handler() {

@Override

public void handleMessage(Message msg) {

finishActivity();

Log.i("isFinish>>>",isFinish+"");

}

};

private void finishActivity() {

if (isFinish) {

mRecorderView.stop();

Intent intent = new Intent(RecorderActivity.this, TopicActivity.class);

Bundle mBundle = new Bundle();

mBundle.putString("path", mRecorderView.getmVecordFile().toString());

mBundle.putString("userId", userId);

intent.putExtras(mBundle);

startActivity(intent);

}

}

public interface OnShootCompletionListener {

public void OnShootSuccess(String path, int second);

public void OnShootFailure();

}

}

视频的预览

package com.yzl.xyb.friends;

import android.app.Activity;

import android.media.AudioManager;

import android.media.MediaPlayer;

import android.os.Bundle;

import android.view.SurfaceHolder;

import android.view.SurfaceView;

import android.view.View;

import android.view.View.OnClickListener;

import android.widget.ImageButton;

import android.widget.ImageView;

public class RecorderPlayActivity extends Activity implements SurfaceHolder.Callback, OnClickListener {

private ImageView ivBack;

private ImageButton btnPlay;

private SurfaceView surfaceView;

private SurfaceHolder surfaceHolder;

private String path=null;

private MediaPlayer player;

private boolean play=false;

@SuppressWarnings("deprecation")

@Override

protected void onCreate(Bundle savedInstanceState) {

// TODO Auto-generated method stub

super.onCreate(savedInstanceState);

setContentView(R.layout.recorder_play);

ivBack=(ImageView) findViewById(R.id.iv_back);

btnPlay=(ImageButton) findViewById(R.id.ib_play);

surfaceView=(SurfaceView) findViewById(R.id.play_view);

btnPlay.setBackground(getResources().getDrawable(R.drawable.play1pressed));

path=this.getIntent().getStringExtra("path");

System.out.println("surface created>>>> path= "+path);

surfaceHolder=surfaceView.getHolder();

surfaceHolder.addCallback(this);

surfaceHolder.setFixedSize(320, 220);

surfaceHolder.setType(SurfaceHolder.SURFACE_TYPE_PUSH_BUFFERS);

System.out.println("oncreate--------------");

ivBack.setOnClickListener(this);

btnPlay.setOnClickListener(this);

surfaceView.setOnClickListener(this);

}

@Override

public void surfaceCreated(SurfaceHolder holder) {

player=new MediaPlayer();

player.setAudioStreamType(AudioManager.STREAM_MUSIC);

player.setDisplay(surfaceHolder);

try {

System.out.println("surface created>>>> path= "+path);

player.setDataSource(path);

player.prepare();

} catch (Exception e) {

e.printStackTrace();

}

}

@Override

public void surfaceChanged(SurfaceHolder holder, int format, int width,

int height) {

// TODO Auto-generated method stub

}

@Override

public void surfaceDestroyed(SurfaceHolder holder) {

// TODO Auto-generated method stub

}

@Override

public void onClick(View v) {

switch (v.getId()) {

case R.id.iv_back:

this.finish();

break;

case R.id.ib_play:

player.start();

btnPlay.setVisibility(View.GONE);

break;

case R.id.play_view:

player.pause();

/*if(play){

player.start();

}else {

player.pause();

}*/

btnPlay.setVisibility(View.VISIBLE);

break;

default:

break;

}

}

@Override

protected void onDestroy() {

// TODO Auto-generated method stub

super.onDestroy();

if(player.isPlaying())

{

player.stop();

}

player.release();

}

}

拥有一个属于自己的朋友圈是不是很开新,可以和好朋友随时随地分享,是不是很开心!

以上就是本文的全部内容,希望对大家学习Android软件编程有所帮助。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值