1、ctivity_main.xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/activity_main"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"> <Button
android:text="播放音乐"
android:onClick="playMusic"
android:layout_width="match_parent"
android:layout_height="wrap_content" />
<Button
android:text="播放视频_1"
android:onClick="playVedio_1"
android:layout_width="match_parent"
android:layout_height="wrap_content" /> <Button
android:text="播放视频_2"
android:onClick="playVedio_2"
android:layout_width="match_parent"
android:layout_height="wrap_content" /> <Button
android:text="播放视频_3"
android:onClick="playVedio_3"
android:layout_width="match_parent"
android:layout_height="wrap_content" /> <Button
android:text="录音"
android:onClick="recorder_test"
android:layout_width="match_parent"
android:layout_height="wrap_content" /> <Button
android:text="录像"
android:onClick="recorder_video_test"
android:layout_width="match_parent"
android:layout_height="wrap_content" /> </LinearLayout>

2、MainActivity.java

package com.example.android_media;

import android.app.Activity;
import android.content.Intent;
import android.net.Uri;
import android.os.Bundle;
import android.view.View; public class MainActivity extends Activity { @Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
}
  //播放音乐
public void playMusic(View view){
Intent intent=new Intent(this,PlayMusicActivity.class);
startActivity(intent);
} //播放视频一
public void playVedio_1(View view){
Intent intent=new Intent(Intent.ACTION_VIEW);
     //定义视频路径
Uri uri= Uri.parse("file:///sdcard/goodmm.mp4");
     //根据uri查找指定类型的文件
intent.setDataAndType(uri,"video/mp4");
startActivity(intent);
} //播放视频二
public void playVedio_2(View view){
Intent intent=new Intent(this,PlayVideoActivity.class);
startActivity(intent);
} //播放视频三
public void playVedio_3(View view){
Intent intent=new Intent(this,PlayVideo_2Activity.class);
startActivity(intent);
}
   //录音
public void recorder_test(View view){
Intent intent=new Intent(this,RecorderActivity.class);
startActivity(intent);
}
  //录像
public void recorder_video_test(View view){
Intent intent=new Intent(this,Recorder_VideoActivity.class);
startActivity(intent);
}
}

3、activity_play_music.xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/activity_play_music"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"> <SeekBar
android:id="@+id/sb"
android:layout_width="match_parent"
android:layout_height="wrap_content" />
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal">
<Button
android:text="播放"
android:onClick="doPlay"
android:layout_width="0dp"
android:layout_weight="1"
android:layout_height="wrap_content" />
<Button
android:text="暂停"
android:onClick="doPause"
android:layout_width="0dp"
android:layout_weight="1"
android:layout_height="wrap_content" />
<Button
android:text="停止"
android:onClick="doStop"
android:layout_width="0dp"
android:layout_weight="1"
android:layout_height="wrap_content" />
</LinearLayout>
</LinearLayout>

4、PlayMusicActivity.java

package com.example.android_media;

import android.app.Activity;
import android.media.AudioManager;
import android.media.MediaPlayer;
import android.os.Bundle;
import android.os.Environment;
import android.os.SystemClock;
import android.util.Log;
import android.view.View;
import android.widget.Button;
import android.widget.SeekBar; import java.io.IOException; public class PlayMusicActivity extends Activity {
  //拖动条
private SeekBar sb;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_play_music);
sb=(SeekBar)findViewById(R.id.sb);
     //设置进度条改变监听事件
sb.setOnSeekBarChangeListener(new SeekBar.OnSeekBarChangeListener() {
@Override
public void onProgressChanged(SeekBar seekBar, int i, boolean b) {
}
@Override
public void onStartTrackingTouch(SeekBar seekBar) { }
@Override
public void onStopTrackingTouch(SeekBar seekBar) {
if(mp!=null)
            //改变音频播放进度,通过拖动条的位置实现快进和后退
mp.seekTo(seekBar.getProgress());
}
});
} //播放音乐
   //播放器
MediaPlayer mp;
boolean isRun=true;
public void doPlay(View view){
if(mp!=null)
return;
isRun=true;
     //实例化播放器
mp=new MediaPlayer();//构建一个播放器对象
     //使用reset()方法来恢复一些意外错误
mp.reset();
     //获取音频路径
String path= Environment.getExternalStorageDirectory().getAbsolutePath()+"/nobody.mp3";
try {
       //给播放器加载资源
mp.setDataSource(path);//设置要播放的文件路径
mp.setAudioStreamType(AudioManager.STREAM_MUSIC);//设置多媒体类型
mp.prepare();//准备就绪
       //getDuration() 获取音频文件的总长度,将其设置为进度条的长度
sb.setMax(mp.getDuration());//设置进度条最大值
mp.start();//开始播放 //更新进度
new Thread(new Runnable() {
@Override
public void run() {
            //mp.getCurrentPosition()获取音频当前播放点
            //如果正在播放并且当前播放点小于音频的最大长度
while(isRun&&mp.getCurrentPosition()<=sb.getMax()){
               //设置拖动条当前的位置和音频播放的当前播放点的位置保持一致
sb.setProgress(mp.getCurrentPosition());
SystemClock.sleep(200);
}
}
}).start();
} catch (IOException e) {
e.printStackTrace();
}
} public void doPause(View view){
if(mp==null)
return;
if(mp.isPlaying()){
mp.pause();
((Button)view).setText("继续播放");
}else{
mp.start();
((Button)view).setText("暂停");
}
} public void doStop(View view){
if(mp!=null&&mp.isPlaying()){
isRun=false;
mp.stop();
mp.release();
mp=null;
}
} @Override
protected void onDestroy() {
super.onDestroy();
doStop(null);
}
}

5、activity_play_video.xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/activity_play_video"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"> <VideoView
android:id="@+id/videoView"
android:background="@drawable/bg"
android:layout_width="match_parent"
android:layout_height="300dp" />
</LinearLayout>

6、PlayVideoActivity.java

package com.example.android_media;

import android.app.Activity;
import android.net.Uri;
import android.os.Bundle;
import android.os.SystemClock;
import android.widget.MediaController;
import android.widget.VideoView; public class PlayVideoActivity extends Activity { private VideoView videoView;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_play_video);
videoView=(VideoView)findViewById(R.id.videoView);
videoView.setMediaController(new MediaController(this));
Uri uri= Uri.parse("file:///sdcard/goodmm.mp4");
videoView.setVideoURI(uri);
new Thread(new Runnable() {
@Override
public void run() {
SystemClock.sleep(5000);
runOnUiThread(new Runnable() {
@Override
public void run() {
videoView.setBackground(null);
videoView.start();
}
});
}
}).start();
}
}

7、activity_play_video_2.xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/activity_play_music"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"> <SurfaceView
android:id="@+id/sfView"
android:background="@drawable/bg"
android:layout_width="match_parent"
android:layout_height="260dp" />
<SeekBar
android:id="@+id/sb"
android:layout_width="match_parent"
android:layout_height="wrap_content" />
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal">
<Button
android:text="播放"
android:onClick="doPlay"
android:layout_width="0dp"
android:layout_weight="1"
android:layout_height="wrap_content" />
<Button
android:text="暂停"
android:onClick="doPause"
android:layout_width="0dp"
android:layout_weight="1"
android:layout_height="wrap_content" />
<Button
android:text="停止"
android:onClick="doStop"
android:layout_width="0dp"
android:layout_weight="1"
android:layout_height="wrap_content" />
</LinearLayout>
</LinearLayout>

8、PlayVideo_2Activity.java

package com.example.android_media;

import android.app.Activity;
import android.media.AudioManager;
import android.media.MediaPlayer;
import android.os.Bundle;
import android.os.Environment;
import android.os.SystemClock;
import android.view.SurfaceHolder;
import android.view.SurfaceView;
import android.view.View;
import android.widget.Button;
import android.widget.SeekBar; import java.io.IOException; public class PlayVideo_2Activity extends Activity { private MediaPlayer mp;
private SurfaceView sfView;
private SurfaceHolder holder;
private SeekBar sb;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_play_video_2); sb=(SeekBar)findViewById(R.id.sb);
sfView=(SurfaceView)findViewById(R.id.sfView);
holder=sfView.getHolder(); sb.setOnSeekBarChangeListener(new SeekBar.OnSeekBarChangeListener() {
@Override
public void onProgressChanged(SeekBar seekBar, int i, boolean b) {
}
@Override
public void onStartTrackingTouch(SeekBar seekBar) {
}
@Override
public void onStopTrackingTouch(SeekBar seekBar) {
if(mp!=null)
mp.seekTo(seekBar.getProgress());
}
});
} boolean isRun=true;
public void doPlay(View view){
if(mp!=null)
return;
isRun=true;
mp=new MediaPlayer();
mp.reset();
String path= Environment.getExternalStorageDirectory().getAbsolutePath()+"/goodmm.mp4";
try {
mp.setDataSource(path);//设置数据源
mp.setAudioStreamType(AudioManager.STREAM_MUSIC);
mp.setDisplay(holder);//设置显示位置
mp.prepare();
sb.setMax(mp.getDuration());
sfView.setBackground(null);
mp.start(); new Thread(new Runnable() {
@Override
public void run() {
while (isRun&&mp.getCurrentPosition()<=sb.getMax()){
sb.setProgress(mp.getCurrentPosition());
SystemClock.sleep(200);
}
}
}).start(); } catch (IOException e) {
e.printStackTrace();
}
} public void doPause(View view){
if(mp==null)
return;
if(mp.isPlaying()){
mp.pause();
((Button)view).setText("继续播放");
}else{
mp.start();
((Button)view).setText("暂停");
}
} public void doStop(View view){
if(mp!=null&&mp.isPlaying()){
isRun=false;
mp.stop();
mp.release();
mp=null;
}
} @Override
protected void onDestroy() {
super.onDestroy();
doStop(null);
}
}

9、activity_recorder_video.xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/activity_recorder__video"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"> <SurfaceView
android:id="@+id/sfView"
android:layout_width="match_parent"
android:layout_height="300dp" />
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal">
<Button
android:text="开始录像"
android:onClick="doStart"
android:layout_width="0dp"
android:layout_weight="1"
android:layout_height="wrap_content" />
<Button
android:text="停止录像"
android:onClick="doStop"
android:layout_width="0dp"
android:layout_weight="1"
android:layout_height="wrap_content" />
<Button
android:text="播放录像"
android:onClick="doPlay"
android:layout_width="0dp"
android:layout_weight="1"
android:layout_height="wrap_content" />
</LinearLayout> </LinearLayout>

10、Recorder_VideoActivity.java

package com.example.android_media;

import android.app.Activity;
import android.media.AudioManager;
import android.media.MediaPlayer;
import android.media.MediaRecorder;
import android.os.Bundle;
import android.os.Environment;
import android.view.SurfaceHolder;
import android.view.SurfaceView;
import android.view.View; import java.io.IOException; public class Recorder_VideoActivity extends Activity { private MediaPlayer mp;
private SurfaceView sfView;
private SurfaceHolder holder;
private MediaRecorder recorder;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_recorder__video);
sfView=(SurfaceView)findViewById(R.id.sfView);
holder=sfView.getHolder();
} //开始录像
public void doStart(View view){
recorder=new MediaRecorder();
recorder.setVideoSource(MediaRecorder.VideoSource.CAMERA);
recorder.setOutputFormat(MediaRecorder.OutputFormat.MPEG_4);
recorder.setVideoEncoder(MediaRecorder.VideoEncoder.DEFAULT);
String path= Environment.getExternalStorageDirectory().getAbsolutePath()+"/luxiang.mp4";
recorder.setOutputFile(path);
recorder.setPreviewDisplay(holder.getSurface());
try {
recorder.prepare();
recorder.start();
} catch (IOException e) {
e.printStackTrace();
}
} public void doStop(View view){
if(recorder!=null){
try{
recorder.stop();
}catch (Exception ex){
ex.printStackTrace();
}
} } public void doPlay(View view){
if(mp!=null)
return;
mp=new MediaPlayer();
mp.reset();
String path= Environment.getExternalStorageDirectory().getAbsolutePath()+"/luxiang.mp4";
try {
mp.setDataSource(path);//设置数据源
mp.setAudioStreamType(AudioManager.STREAM_MUSIC);
mp.setDisplay(holder);//设置显示位置
mp.prepare();
sfView.setBackground(null);
mp.start();
}catch (Exception ex){
ex.printStackTrace();
} }
}

11、activity_recorder.xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/activity_recorder"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"> <Button
android:text="开始录音"
android:onClick="doStart"
android:layout_width="match_parent"
android:layout_height="wrap_content" />
<Button
android:text="结束录音"
android:onClick="doStart"
android:layout_width="match_parent"
android:layout_height="wrap_content" />
<Button
android:text="播放录音"
android:onClick="doPlay"
android:layout_width="match_parent"
android:layout_height="wrap_content" />
</LinearLayout>

12、RecorderActivity.java

package com.example.android_media;

import android.app.Activity;
import android.media.MediaPlayer;
import android.media.MediaRecorder;
import android.os.Bundle;
import android.os.Environment;
import android.view.View; import java.io.IOException; public class RecorderActivity extends Activity { private MediaRecorder recorder;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_recorder);
} //开始录音
public void doStart(View view){
if(recorder!=null)
return;
recorder=new MediaRecorder();//构建了一个录音设备
recorder.setAudioSource(MediaRecorder.AudioSource.MIC);//设置声音来源
recorder.setOutputFormat(MediaRecorder.OutputFormat.THREE_GPP);//设置录音文件格式
recorder.setAudioEncoder(MediaRecorder.AudioEncoder.DEFAULT);//设置声音编码类型
String path= Environment.getExternalStorageDirectory().getAbsolutePath()+"/luyin.3gp";
recorder.setOutputFile(path);//设置输出文件位置
try {
recorder.prepare();//录音设备就绪
recorder.start();//开始录音
} catch (IOException e) {
e.printStackTrace();
}
} //录音结束
public void doStop(View view){
if(recorder!=null){
recorder.stop();
recorder.release();
recorder=null;
}
} //播放录音
MediaPlayer mp;
public void doPlay(View view){
if(mp!=null)
return;
mp=new MediaPlayer();
mp.reset();
String path= Environment.getExternalStorageDirectory().getAbsolutePath()+"/luyin.3gp";
try {
mp.setDataSource(path);
mp.prepare();
mp.start();
} catch (IOException e) {
e.printStackTrace();
}
} @Override
protected void onDestroy() {
super.onDestroy();
doStop(null);
}
}

13、AndroidManifest.xml

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.example.android_media"> <uses-permission android:name="android.permission.MOUNT_UNMOUNT_FILESYSTEMS" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.RECORD_AUDIO" />
<uses-permission android:name="android.permission.CAMERA" /> <application
android:allowBackup="true"
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:supportsRtl="true"
android:theme="@style/AppTheme">
<activity android:name=".MainActivity">
<intent-filter>
<action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<activity android:name=".PlayMusicActivity" />
<activity android:name=".PlayVideoActivity" />
<activity android:name=".PlayVideo_2Activity" />
<activity android:name=".RecorderActivity" />
<activity android:name=".Recorder_VideoActivity"></activity>
</application> </manifest>

14、bg.png

Android开发 ---Media的更多相关文章

  1. Android 开发环境搭建以及工具(不断更新)

    学习android需要学习的编程知识 https://wiki.cyanogenmod.org/w/Doc:_Development_Resources 从http://source.android. ...

  2. Android开发涉及有点概念&相关知识点(待写)

    前言,承接之前的 IOS开发涉及有点概念&相关知识点,这次归纳的是Android开发相关,好废话不说了.. 先声明下,Android开发涉及概念比IOS杂很多,可能有很多都题不到的.. 首先由 ...

  3. android开发之——获取相册图片和路径

    Android开发获取相册图片的方式网上有很多种,这里说一个Android4.4后的方法,因为版本越高,一些老的api就会被弃用,新的api和老的api不兼容,导致出现很多问题. 比如:managed ...

  4. Android开发中,那些让您觉得相见恨晚的方法、类或接口

    Android开发中,那些让你觉得相见恨晚的方法.类或接口本篇文章内容提取自知乎Android开发中,有哪些让你觉得相见恨晚的方法.类或接口?,其实有一部是JAVA的,但是在android开发中也算常 ...

  5. Mac android 开发 sdk配置和手机连接

    本文适合已经很熟悉android开发的人员: 首先安装Mac版的eclipse 其次是android sdk的准备: 由于android sdk在线更新很不方便,所以可以选择复制:准备好Mac下的an ...

  6. Android开发系列之学习路线图

    通过前面的3篇博客已经简单的介绍了Android开发的过程并写了一个简单的demo,了解了Android开发的环境以及一些背景知识. 接下来这篇博客不打算继续学习Android开发的细节,先停一下,明 ...

  7. Android群英传》读书笔记 (1) 第一章 Android体系与系统架构 + 第二章 Android开发工具新接触

    第一章 Android体系与系统架构 1.Dalvik 和 ARTDalvik好比是一辆可折叠的自行车,平时是折叠的,只有骑的时候,才需要组装起来用.ART好比是一辆组装好了的自行车,装好就可以骑了. ...

  8. android开发中的5种存储数据方式

    数据存储在开发中是使用最频繁的,根据不同的情况选择不同的存储数据方式对于提高开发效率很有帮助.下面笔者在主要介绍Android平台中实现数据存储的5种方式. 1.使用SharedPreferences ...

  9. Android开发最佳学习路线图

          为了帮助大家更好的学习Android开发的相关知识,尚观4G智能操作系统研究室(www.up4g.com)为大家制作下面学习路线图:希望能帮助到广大的android爱好者. 在開始之前我们 ...

随机推荐

  1. mysql 事务锁超时时间 innodb_lock_wait_timeout

    mysql 事务锁超时时间 innodb_lock_wait_timeout: # 查询全局等待事务锁超时时间 SHOW GLOBAL VARIABLES LIKE 'innodb_lock_wait ...

  2. flask 定义数据关系(多对一)

    多对一 一对多关系反过来就是多对一关系,这两种关系模式分别从不同的视角出发.一个作者拥有多篇文章,反过来就是多篇文章属于同一个作者.为了便于区分,我们使用居民和城市来演示多对一关系:多个居民住在同一个 ...

  3. JS用斜率判断鼠标进入DIV四个方向的方法 判断鼠标移入方向

    本文要介绍的是一种鼠标从一个元素移入移出时,获取鼠标移动方向的思路.这个方法可以帮助你判断鼠标在移入移出时,是从上下左右的哪个方向发生的.这个思路,是我自己琢磨出来,利用了一点曾经高中学过的数学知识, ...

  4. catch data

    抓取一些有反爬机制的website 喜马拉雅   每天都有-动态class 通过网络请求

  5. Docker Weave 命令整理

    Docker Weave 命令整理 # 查看weave状态 weave status # 查看状态详情 weave status connections # 查看weave相互之间节点建立的关系 we ...

  6. 关于oracle result_cache

    结果集缓存 和聚合物化视图类似,报表系统和数据仓库系统是最适合结果集缓存的,这些系统通常具有大量复杂的SQL,其中不少子查询包含聚合函数,如果能够尽可能重用这些已经计算过的聚合结果集,将极大的提升系统 ...

  7. mac忘记操作密码

    转载于:https://blog.csdn.net/wu110112/article/details/70312987 如果忘记mac登陆密码应该如何处理呢? 这里大家请勿着急,我来帮大家解决这个问题 ...

  8. Golang实现杨辉三角

    杨辉三角,也算是一个经典的题目了.就简单的说说. 写代码之前,先分析要做的东西的特点,找到规律,再把这个规律描述一下. 然后把这个描述翻译成编程语言,就可以说是编程了. 那么杨辉三角有什么特点? 首先 ...

  9. BottomNavigationBar + BottomNavigationBarItem导航的另外一种用法

    import 'package:flutter/material.dart'; import 'News.dart'; import 'Video.dart'; import 'Chat.dart'; ...

  10. oracle常用的数据字典查询语句

    select * from all_source where owner='user_name' and type = 'PROCEDURE' and upper(text) like upper(' ...