精华内容
下载资源
问答
  • 是Google Chrome应用(或独立应用),可让您从网络服务器或本地媒体库中流式播放音乐。 特征 播放Google Chrome支持的所有音频和视频格式。 记住您的播放列表和设置。 全面的键盘快捷键。 最小,快速,容易。 ...
  • 本地媒体库或者拍照 都是调用系统本身的功能, Intent intent = new Intent(Intent.ACTION_GET_CONTENT); Intent intent=new Intent(android.provider.MediaStore.ACTION_IMAGE_CAPTURE); 所以直接...

    本地媒体库或者拍照 都是调用系统本身的功能,

    Intent intent = new Intent(Intent.ACTION_GET_CONTENT); 
    Intent intent=new Intent(android.provider.MediaStore.ACTION_IMAGE_CAPTURE); 
    
    所以直接startActivityForResult就能浏览媒体库或者拍照,然后就是要获得返回的数据,直接调用onActivityResult即可,这只是基本的思路,实际操作并不是这么简单。

    首先是启动媒体库部分

        private void getPictureFormLocal()
        {
            Intent intent = new Intent(Intent.ACTION_GET_CONTENT);
            //用来表明intent只能被openFileDescriptor(Uri, String)打开 
            intent.addCategory(Intent.CATEGORY_OPENABLE);
            //intent.setType(“audio/*”); //选择音频
            //intent.setType(“video/*”); //选择视频
            //intent.setType(“video/*;image/*”);//同时选择视频和图片
            intent.setType("image/*");
            startActivityForResult(Intent.createChooser(intent, "选择图片来源"),
                GET_PHOTO_FROM_LOCAL);
        }
    然后是启动照相机拍照

        private void getPictureFromCamera()
        {
            //检查SDCard是否存在
            String status = Environment.getExternalStorageState();
            if (status.equals(Environment.MEDIA_MOUNTED))
            {
                try
                {
                    File dir = new File(photopath);
                    if (!dir.exists())
                        dir.mkdirs();
    
                    Intent intent = new Intent(
                        android.provider.MediaStore.ACTION_IMAGE_CAPTURE);
                    path = photopath + getPhotoFileName();
                    File f = new File(path);
                    Uri u = Uri.fromFile(f);
                    intent.putExtra(MediaStore.Images.Media.ORIENTATION, 0);
                    intent.putExtra(MediaStore.EXTRA_OUTPUT, u);
                    startActivityForResult(intent, GET_PHOTO_FROM_CAMERA);
                }
                catch (ActivityNotFoundException e)
                {
                    Toast.makeText(MainActivity.this, "没有找到储存目录", Toast.LENGTH_LONG).show();
                }
            }
            else
            {
                Toast.makeText(MainActivity.this, "没有储存卡", Toast.LENGTH_LONG).show();
            }
        }

    最后是在onActivityResult中得到bitmap

    @Override
        protected void onActivityResult(int requestCode, int resultCode, Intent data)
        {
            Log.i(TAG, "in onActivityResult");
            if (resultCode == RESULT_OK)
            {
                Bitmap bp = null;
                switch (requestCode)
                {
                    case GET_PHOTO_FROM_CAMERA :
                        bp = BitmapFactory.decodeFile(path);
                        break;
                    case GET_PHOTO_FROM_LOCAL :
                        Uri uri = data.getData();
                        Log.i(TAG, "uri == " + uri);
                        try
                        {
                            bp = BitmapFactory.decodeStream(resolver.openInputStream(uri));
                        }
                        catch (FileNotFoundException e)
                        {
                            e.printStackTrace();
                        }
                        Log.i(TAG, "bp == " + bp.toString());
                        break;
                }
                imageView.setImageBitmap(bp);
            }
            super.onActivityResult(requestCode, resultCode, data);
        }
    大概思路就是这个样子

    代码地址




    展开全文
  • 最近在做个小项目,想像微博那样可以修改自己的头像,于是乎,需要从本地媒体库中选择头像,显示在imageView中,并且上传到服务器进行保存,以便下次登录自动加载头像。废话不多说,以下是我参考了各种百度和google...

    最近在做个小项目,想像微博那样可以修改自己的头像,于是乎,需要从本地媒体库中选择头像,显示在imageView中,并且上传到服务器进行保存,以便下次登录自动加载头像。废话不多说,以下是我参考了各种百度和google后结合自己的想法写出来的。

    第一步:从媒体库中选择图片,这个代码形式比较固定,其核心的代码是:

    	     /***
                 * 这个是调用android内置的intent,来过滤图片文件   ,同时也可以过滤其他的  
                 */
                Intent intent = new Intent();
                // 开启Pictures画面Type设定为image   
                intent.setType("image/*");
                // 使用Intent.ACTION_GET_CONTENT这个Action
                intent.setAction(Intent.ACTION_GET_CONTENT);
                // 取得相片后返回本画面  
                startActivityForResult(intent, 1);
    以上主要是用来打开媒体库,然后选择图片,这些代码我主要将其放到一个按钮的事件监听中。

    第二步:选择图片后,可以在手机上进行展示,并且获取图片的地址:

        protected void onActivityResult(int requestCode, int resultCode, Intent data) {
            if(resultCode==Activity.RESULT_OK) {
                /**
                 * 当选择的图片不为空的话,在获取到图片的途径  
                 */
                Uri uri = data.getData();
                Log.e(TAG, "uri = "+ uri);
                try {
                    String[] pojo = {MediaStore.Images.Media.DATA};
                    Cursor cursor = managedQuery(uri, pojo, null, null,null);
                    if(cursor!=null) {
                        ContentResolver cr = this.getContentResolver();
                        int colunm_index = cursor.getColumnIndexOrThrow(MediaStore.Images.Media.DATA);
                        cursor.moveToFirst();
                        //获取图片的路径
                        String path = cursor.getString(colunm_index);
                        /***
                         * 这里加这样一个判断主要是为了第三方的软件选择,比如:使用第三方的文件管理器的话
                         * ,你选择的文件就不一定是图片了,这样的话,我们判断文件的后缀名
                         * 如果是图片格式的话,那么才可以   
                         */
                        if(path.endsWith("jpg")||path.endsWith("png")) {
                            picPath = path;
                            Bitmap bitmap = BitmapFactory.decodeStream(cr.openInputStream(uri));
                            imageView.setImageBitmap(bitmap);
                        }else{alert();}
                    } else {
                    	alert();
                    }
                } catch (Exception e) {
                	e.printStackTrace();
                }
            }
            super.onActivityResult(requestCode, resultCode, data);
        }
        
        private void alert() {
            Dialog dialog = new AlertDialog.Builder(this)
            	.setTitle("提示").setMessage("您选择的不是有效的图片")
            	.setPositiveButton("确定",
                    new DialogInterface.OnClickListener() {
                        public void onClick(DialogInterface dialog,
                                int which) {
                            picPath = null;
                        }
                    })
            .create();
            dialog.show();
        }
        
    以上主要是将其显示在ImageView中,并且获得picPath这个路径。

    第三步:将这个图片进行包装成流的形式,利用socket与服务器进行通信,从而向服务器发送图片:

               File file = new File(picPath);
    		if (file != null) {
    			int length = 0;
    			//每次上传的大小
    			byte[] sendBytes = new byte[1024];
    			Socket socket = null;
    			OutputStream os = null;
    			ObjectOutputStream oos = null;
    			FileInputStream fos = null;
    			try {
    				socket= new Socket("192.168.0.106", 5000);
    				os = socket.getOutputStream();
    				oos = new ObjectOutputStream(os);
    				//UPLOAD_IMG是一个常量,主要是服务器来判断是上传操作
    				oos.writeInt(UPLOAD_IMG);
    				oos.flush();
    				fis = new FileInputStream(file);
    				while ((length = fis.read(sendBytes, 0, sendBytes.length)) > 0) {
    					oos.write(sendBytes, 0, length);
    					oos.flush();
    				}
    				Thread.sleep(1000);
    			} catch (Exception e) {
    				e.printStackTrace();
    			} finally {
    				if(os != null) {
    					os.close();
    				}
    				if(oos != null) {
    					oos.close();
    				}
    				if(fos != null) {
    					fos.close();
    				}
    				if(socket != null) {
    					socket.close();
    				}
    			}
    		}

    以上代码主要是建立与服务器的连接,并且包装成流的形式进行传送,你可以将他放到另外一个按钮的监听事件中。

    第四步:接下来是服务器端的代码,主要是接收图片,并且保存到某个位置,核心代码如下:

    	//上传图片
    	private void uploadImg() {
    		byte[] inputByte = new byte[1024];
    		//user主要是我项目开发时的一个用户对象
    		//User user = null;
    		int length = 0;
    		try {
    			//user = (User) ois.readObject();
    			//File file = new File(PIC_PATH + user.getId() + ".jpg");
    			File file = new File(PIC_PATH + "上传的图片" + ".jpg";
    			if(!file.exists()) {
    				file.createNewFile();
    			}
    			if(user.getPic() == null) {
    				jdbc.updateUserPic(user);
    			}
    			FileOutputStream fos = new FileOutputStream(file);
    			while ((length = ois.read(inputByte, 0, inputByte.length)) > 0) {
    				fos.write(inputByte, 0, length);
    				fos.flush();
    			}
    			fos.close();
    			oos.writeInt(UPLOAD_SUCCESS);
    			oos.flush();
    		} catch (IOException e) {
    			e.printStackTrace();
    		} catch (ClassNotFoundException e) {
    			e.printStackTrace();
    		}
    	}

    当服务器接收了客户端的oos.writeInt(UPLOAD_IMG),这个信息后,判断是上传图片,从而跳转到uploadImg()这个方法中执行,这个方法里面的代码就是上面的。PIC_PATH是PC机上得某一个路劲,大家自定义吧。好了,基本就是这样了,网上其实有很多方法,有利用HTTP进行传输的,说是可以写个Servlet,但是我没试过,也不很熟悉,所以就用我比较熟悉的socket进行传输数据,这个还是比较简单的。如果上面有什么雷同的,请不要见怪(毕竟有参考网上的代码),欢迎指出错误的地方。联系:229047554@qq.com


    展开全文
  • ///  /// 保存图片至本地媒体库  ///  ///  ///  private void btnSave_Click(object sender, RoutedEventArgs e)  {  WriteableBitmap _bitmap = new Write
            /// <summary>
            /// 保存图片至本地媒体库
            /// </summary>
            /// <param name="sender"></param>
            /// <param name="e"></param>
            private void btnSave_Click(object sender, RoutedEventArgs e)
            {
                WriteableBitmap _bitmap = new WriteableBitmap(this.inkPre,null);


                //声明内存流,以便在内存流中创建图片
                MemoryStream memoryStream = new MemoryStream(); 


                //将bitmap写进内存流(jpeg流)
                _bitmap.SaveJpeg(memoryStream, (int)this.inkPre.ActualWidth, (int)this.inkPre .ActualHeight, 0, 0); 


                MediaLibrary library = new MediaLibrary(); //初始化媒体库实例【需添加Microfoft.Xna.framework引用】
                
                Picture pic = library.SavePicture(DateTime .Now.ToString(), memoryStream.GetBuffer());//将内存流中的图片保存至媒体库
                if (pic != null)
                {
                    MessageBox.Show("保存成功。");
                }

            }

    展开全文
  • android搜索本地媒体库中的音乐文件

    千次阅读 2015-01-04 16:22:06
    // 媒体播放总时间 public String albums; // 专辑 public String artist; // 艺术家 public String singer; //歌手 public long size; } 通过ContentResolver获取音乐列表 public static List...

    建立一个bean来存储音乐信息

    public class MediaEntity implements Serializable {
    	
    	private static final long serialVersionUID = 1L;
    	
    	public int id; //id标识
    	public String title; // 显示名称
    	public String display_name; // 文件名称
    	public String path; // 音乐文件的路径
    	public int duration; // 媒体播放总时间
    	public String albums; // 专辑
    	public String artist; // 艺术家 
    	public String singer; //歌手 
    	public long size;
    	
    }

    通过ContentResolver获取音乐列表

    public static List<MediaEntity> getAllMediaList(Context context, String selection) {
    		Cursor cursor = null;
    		List<MediaEntity> mediaList = new ArrayList<MediaEntity>();
    		try {
    			cursor = context.getContentResolver().query(MediaStore.Audio.Media.EXTERNAL_CONTENT_URI,
    					new String[] {	
    					MediaStore.Audio.Media._ID,
    					MediaStore.Audio.Media.TITLE,
    					MediaStore.Audio.Media.DISPLAY_NAME,
    					MediaStore.Audio.Media.DURATION,
    					MediaStore.Audio.Media.ARTIST,
    					MediaStore.Audio.Media.DATA,
    					MediaStore.Audio.Media.SIZE},
    					selection, null, MediaStore.Audio.Media.DATE_ADDED + " DESC");
    			if(cursor == null) {
    				Log.d(TAG, "The getMediaList cursor is null.");
    				return mediaList;
    			}
    			int count= cursor.getCount();
    			if(count <= 0) {
    				Log.d(TAG, "The getMediaList cursor count is 0.");
    				return mediaList;
    			}
    			mediaList = new ArrayList<MediaEntity>();
    			MediaEntity mediaEntity = null;
    //			String[] columns = cursor.getColumnNames(); 
    			while (cursor.moveToNext()) {
    				mediaEntity = new MediaEntity();
    				mediaEntity.id = cursor.getInt(cursor.getColumnIndex(MediaStore.Audio.Media._ID));
    				mediaEntity.title = cursor.getString(cursor.getColumnIndex(MediaStore.Audio.Media.TITLE));
    				mediaEntity.display_name = cursor.getString(cursor.getColumnIndex(MediaStore.Audio.Media.DISPLAY_NAME));
    				mediaEntity.duration = cursor.getInt(cursor.getColumnIndex(MediaStore.Audio.Media.DURATION));
    				mediaEntity.size = cursor.getLong(cursor.getColumnIndex(MediaStore.Audio.Media.SIZE));
    				mediaEntity.durationStr = longToStrTime(mediaEntity.duration);
    				
    				if(!checkIsMusic(mediaEntity.duration, mediaEntity.size)) {
    					continue;
    				}
    				mediaEntity.artist = cursor.getString(cursor.getColumnIndex(MediaStore.Audio.Media.ARTIST));
    				mediaEntity.path = cursor.getString(cursor.getColumnIndex(MediaStore.Audio.Media.DATA));
    				mediaList.add(mediaEntity);
    			}
    		} catch (Exception e) {
    			
    		} finally {
    			if(cursor != null) {
    				cursor.close();
    			}
    		}
    		return mediaList;
    	}

     /**
    	 * 根据时间和大小,来判断所筛选的media 是否为音乐文件,具体规则为筛选小于30秒和1m一下的
    	 */
    	public static boolean checkIsMusic(int time, long size) {
    		if(time <= 0 || size <= 0) {
    			return  false;
    		}
    		
    		time /= 1000;
    		int minute = time / 60;
    	//	int hour = minute / 60;
    		int second = time % 60;
    		minute %= 60;
    		if(minute <= 0 && second <= 30) {
    			return  false;
    		}
    		if(size <= 1024 * 1024){
    			return false;
    		}
    		return true;
    	}

    检查sd卡上的媒体文件

    private void scanSdCard(){
            sendBroadcast(new Intent(/*Intent.ACTION_MEDIA_SCANNER_SCAN_FILE*/Intent.ACTION_MEDIA_MOUNTED,Uri.parse("file://" + Environment.getExternalStorageDirectory().getAbsolutePath()))); 
         }


    展开全文
  • 转自:... 歌曲ID:MediaStore.Audio.Media._ID  Int id = cursor.getInt(cursor.getColumnIndexOrThrow(MediaStore.Audio.Media._ID));  歌曲的名称 :MediaStore.Audio.Med
  • 在开发自定义图片查看中有一个功能是...如果不是收藏的图片,则只需直接删除文件,同时通知系统更新本地图片媒体库。如果是收藏的图片,除了上述操作,还需要删除在收藏图片的表中对应的图片。 private void delete
  • android刷新媒体库

    千次阅读 2018-07-01 11:55:38
    因为项目需要,对文件进行操作完后,如果不手动立即刷新本地媒体库,本地查看是无法查看实时的效果,要重启手机,如果需要立即刷新本地媒体库,则调用以下代码:package com.example.yzb.myapplication; import ...
  • 【Android】本地图片选择 打开媒体库,选择图片
  • <div><p>wordpress version : ...亦或是媒体库里面上传,url都仍然是本地的,图片也没传上oss,是什么问题呢?</p><p>该提问来源于开源项目:IvanChou/aliyun-oss-support</p></div>
  • 自定义媒体库,浏览本地视频 ,本地音乐,,本地图片,
  • 详细请见 【Android】本地图片选择(打开媒体库,选择图片)
  • 觉得博文有用,请点赞,请留言,请关注,...后续将博文,将实现 下载音乐成功后,通更新媒体库后,更新本地音乐列表。 因为,没有自己的服务器,所以网络音乐所有相关功能(包含搜索音乐、下载音乐、下载歌词)均无法保
  • ===导入外部图像2 v2.0.6 === 在帖子或页面中制作所有外部链接的图像和(可选)...通过访问仪表板>媒体>导入图像一次导入到多个帖子 =积分= 1.5.x及更高版本:由发布。 此插件基于Marty Thornley的Import External
  • 照片墙的图片是通过访问系统媒体库得到的。 然后在大图浏览在线图片的页面,可以长按来保存图片。 现在要实现的效果是:长按保存后,进入照片墙可以看到刚才保存的图片。 经过调试,总结如下,只要做到了下面列出...
  • 通过此插件,只需添加远程图像地址的URL,即可将图片显示在本地媒体库中,同时也可以解决特色图像不能调用外部图片的问题。 因添加完外部媒体链接后,信息已记录在数据库wp_posts表中,所以停用插件并不影响媒体...
  • React本机照片浏览器 信息 ...媒体> 要显示的列表。 [] initialIndex 数 最初设置可见的照片。 0 alwaysShowControls 布尔型 允许控制这些条和控件是始终可见还是淡出以显示完整的照片。 f
  • import java.io.FileNotFoundException; import android.app.Activity; import android.content.ContentResolver; import android.content.Intent;...import android.graphics.Bitmap;...import androi...
  • qt-ffmpeg-rtsp-video 使用QT界面,FFMPEG 做解码,用于播放流媒体以及本地视频。本项目有一个特色就是透明视频的叠加。在流媒体的显示上覆盖一层本地视频。
  • 最近遇到一个非常奇葩的功能,做一个类似相册类的应用,名曰:智能相册,涉及到本地媒体库比较多。一开始需求写了这个功能我很懵,因为本地的系统定制太多,一看就知道适配很难做,接下来就是各种挖坑、填坑的过程。...
  • 原文地址:http://blog.csdn.net/feng88724/article/details/6170955 ...在此调查中我要实现的是:点击Pictures按钮后,获取手机内所有图片,选择某一个图片,并显示到ImageView中。 应用范围: 图片上传时的图片选择

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 1,102
精华内容 440
关键字:

本地媒体库