时间:2021-07-01 10:21:17 帮助过:53人阅读
本文实例分享了一个简单的朋友圈程序,包含了朋友圈的列表实现,视频的录制、预览与上传,图片可选择拍照,供大家参考,具体内容如下
FriendsListActivity 代码如下
- public class FriendsListActivity extends BaseActivity implements OnRefreshListener<ListView>, 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<ListView> refreshView) {
- if (!isRefreshing) {
- isRefreshing = true;
- mPage = 0;
- FriendsApi.getFriendsList(mContext, mCallBack);
- }
- }
- protected NetCallBack mCallBack = new NetCallBack() {
- public void friendslist(ArrayList<Interaction> 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
- <?xml version="1.0" encoding="utf-8"?>
- <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
- android:layout_width="match_parent"
- android:layout_height="match_parent"
- android:background="@color/backgroud_color" >
- <include
- android:id="@+id/list_title"
- android:layout_alignParentTop="true"
- layout="@layout/list_title"/>
- <com.yzl.xyb.friends.refresh.view.PullToRefreshListView
- 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"/>
- <include layout="@layout/loading"/>
- </RelativeLayout>
适配器 InteractionAdapter 对朋友圈列表进行数据填充
- public class InteractionAdapter extends BaseAdapter implements OnClickListener {
- private ArrayList<Interaction> 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<Interaction> 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);
- }
多图片选择实现代码
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<String> mImgs;
- private ArrayList<String> pictures;
- private GridView mGirdView;
- private MyAdapter mAdapter;
- /**
- * 临时的辅助类,用于防止同一个文件夹的多次扫描
- */
- private HashSet<String> mDirPaths = new HashSet<String>();
- /**
- * 扫描拿到所有的图片文件夹
- */
- private List<ImageFloder> mImageFloders = new ArrayList<ImageFloder>();
- 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");
- }
- }
视频的录制与预览
- 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软件编程有所帮助。