- 浏览: 385298 次
- 性别:
- 来自: 深圳
文章分类
- 全部博客 (269)
- FY_UML (3)
- FY_JAVA (12)
- FY_JavaScript脚本 (7)
- FY_JSP (3)
- FY_Tapestry框架 (12)
- FY_Spring框架 (3)
- FY_Manager (5)
- FY_Junit(单元测试) (3)
- SERVER (14)
- FY_Struts2框架 (3)
- FY_SVN (2)
- FY_NoSQL (2)
- FY_jquery_sir (13)
- FY_hibernate_sir (8)
- FY_设计模式_sir (6)
- FY_Extjs_sir (10)
- FY_CI_sir (5)
- FY_Oracle_sir (11)
- FY_MySql_sir (10)
- FY_Hadoop_sir (3)
- FY_SOA_sir (1)
- 中文分词技术 (1)
- FY_Android (52)
- FY_架构 (2)
- FY_PhoneGap (2)
- FY_Webstorm (5)
- FY_Sencha Touch (3)
- HTML5应用快速开发 (1)
- FY_python (0)
- HADOOP (1)
- AI (0)
最新评论
-
antao592:
楼主,HkDataSourceWrapper中的getCurr ...
结合spring jdbc 实现分表分库的数据库访问构思 -
bonait:
不错,看看我的这个怎么样www.zipin168.com
So Easy京东商城 -
chenzheng8975:
...
So Easy京东商城 -
yzhenxing:
我导入demo后少com.google.android.gms ...
google地图demo -
echoaiya:
非常感谢~~
google地图demo
--------------------------------------------AndroidManifest.xml----------------------------------
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.ch19"
android:versionCode="1"
android:versionName="1.0" >
<uses-sdk
android:minSdkVersion="10"
android:targetSdkVersion="15" />
<application
android:icon="@drawable/ic_launcher"
android:label="@string/app_name"
android:theme="@style/AppTheme" >
<activity
android:name=".MainActivity"
android:label="@string/title_activity_main" >
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
</application>
</manifest>
--------------------------------------------activity_main.xml-------------------------------------
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/LinearLayout1"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:weightSum="1"
android:orientation="vertical" >
<SurfaceView
android:id="@+id/surfaceVIew"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:layout_weight="0.15"
tools:context=".MainActivity" />
<LinearLayout
android:orientation="horizontal"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:layout_weight="0.85">
<Button
android:id="@+id/btn1"
android:text="开唱"
android:layout_width="wrap_content"
android:layout_height="wrap_content"/>
<Button
android:id="@+id/btn2"
android:text="暂停"
android:layout_width="wrap_content"
android:layout_height="wrap_content"/>
<Button
android:id="@+id/btn3"
android:text="停止"
android:layout_width="wrap_content"
android:layout_height="wrap_content"/>
<Button
android:id="@+id/btn4"
android:text="调低音量"
android:layout_width="wrap_content"
android:layout_height="wrap_content"/>
<Button
android:id="@+id/btn5"
android:text="调高音量"
android:layout_width="wrap_content"
android:layout_height="wrap_content"/>
</LinearLayout>
</LinearLayout>
--------------------------------------------MainActivity.java--------------------------------------
package com.ch19;
import java.io.File;
import java.io.IOException;
import android.app.Activity;
import android.media.AudioManager;
import android.media.MediaPlayer;
import android.os.Bundle;
import android.os.Environment;
import android.util.Log;
import android.view.SurfaceHolder;
import android.view.SurfaceView;
import android.view.View;
import android.view.View.OnClickListener;
import android.view.Window;
import android.view.WindowManager;
import android.widget.Button;
/**
*
* 项目名称:com.ch19
* 类名称:MainActivity
* 类描述:播放、暂停、停止、增加音量、减少音量
* 创建人:方勇
* 创建时间:2012-11-29 下午1:36:47
* Copyright (c) 方勇-版权所有
*/
public class MainActivity extends Activity {
private Button btn_play, btn_pause, btn_stop, btn_low, btn_height;
private SurfaceView mSurfaceView;
/* 播放视频对象 */
private MediaPlayer mediaPlayer;
/* 系统声音 */
private AudioManager audioManager;
/* 播放位置 */
private int position;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setWindow();
setContentView(R.layout.activity_main);
findViews();
setListeners();
mediaPlayer = new MediaPlayer();
setSurfaceView();
}
// 横竖屏切换时的处理
@Override
protected void onSaveInstanceState(Bundle outState) {
if (mediaPlayer != null && mediaPlayer.isPlaying()) {
outState.putInt("position", mediaPlayer.getCurrentPosition());
}
super.onSaveInstanceState(outState);
}
// 横竖屏切换后的处理
@Override
protected void onRestoreInstanceState(Bundle savedInstanceState) {
if (savedInstanceState.containsKey("position")) {
position = savedInstanceState.getInt("position");
}
super.onRestoreInstanceState(savedInstanceState);
}
/* 实例化UI */
private void findViews() {
btn_play = (Button) findViewById(R.id.btn1);
btn_pause = (Button) findViewById(R.id.btn2);
btn_stop = (Button) findViewById(R.id.btn3);
btn_low = (Button) findViewById(R.id.btn4);
btn_height = (Button) findViewById(R.id.btn5);
mSurfaceView = (SurfaceView) findViewById(R.id.surfaceVIew);
audioManager = (AudioManager) getSystemService(AUDIO_SERVICE);
}
/* 为5个按钮设置监听 */
private void setListeners() {
btn_play.setOnClickListener(onClickListener);
btn_pause.setOnClickListener(onClickListener);
btn_stop.setOnClickListener(onClickListener);
btn_low.setOnClickListener(onClickListener);
btn_height.setOnClickListener(onClickListener);
}
/* 屏幕为全屏、无标题 */
private void setWindow() {
requestWindowFeature(Window.FEATURE_NO_TITLE);// 无标题
// // 设置窗体始终点亮
// getWindow().setFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON,
// WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);
// // 设置窗体背景模糊
// getWindow().setFlags(WindowManager.LayoutParams.FLAG_BLUR_BEHIND, WindowManager.LayoutParams.FLAG_BLUR_BEHIND);
// 设置窗体全屏
this.getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN);
}
/* 播放视频 */
private void playMedia() {
/* 初始化状态 */
mediaPlayer.reset();
/* 设置声音流类型 */
mediaPlayer.setAudioStreamType(AudioManager.STREAM_MUSIC);
/* 设置mp3\mp4加载路径 */
File file = new File(Environment.getExternalStorageDirectory(), "sv.3gp");
try {
mediaPlayer.setDataSource(file.getAbsolutePath());
// 缓冲
mediaPlayer.prepare();
// 开始播放
mediaPlayer.start();
// 具体位置
Log.i("position", position + "------");
mediaPlayer.seekTo(position);
// 视频输出到View
mediaPlayer.setDisplay(mSurfaceView.getHolder());
// 重置位置为0
position = 0;
} catch (IllegalArgumentException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IllegalStateException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
/* 设置surfaceView视图 */
private void setSurfaceView() {
// creates a "push" surface
mSurfaceView.getHolder().setType(SurfaceHolder.SURFACE_TYPE_PUSH_BUFFERS);
// 设置事件,回调函数
mSurfaceView.getHolder().addCallback(new SurfaceHolder.Callback() {
/* SurfaceView创建时 */
@Override
public void surfaceCreated(SurfaceHolder holder) {
if (position > 0) {
playMedia();
position = 0;
}
}
@Override
public void surfaceChanged(SurfaceHolder holder, int format, int width, int height) {
// TODO Auto-generated method stub
}
/* SurfaceView销毁视图 */
@Override
public void surfaceDestroyed(SurfaceHolder holder) {
if (mediaPlayer.isPlaying()) {
mediaPlayer.stop();
}
/* Activity销毁时停止播放,释放资源。不做这个操作,即使退出,还是能听到视频的声音 */
mediaPlayer.release();
}
});
}
// 设置5个按钮的监听事件
private OnClickListener onClickListener = new OnClickListener() {
@Override
public void onClick(View v) {
switch (v.getId()) {
case R.id.btn1:// 播放
if (mediaPlayer != null && mediaPlayer.isPlaying()) {
return;
} else {
playMedia();
}
break;
case R.id.btn2:// 暂停
if (mediaPlayer != null && mediaPlayer.isPlaying()) {
position = mediaPlayer.getCurrentPosition();
mediaPlayer.pause();
} else {
return;
}
break;
case R.id.btn3:// 停止
if (mediaPlayer != null && mediaPlayer.isPlaying()) {
mediaPlayer.stop();
position = 0;
} else {
return;
}
break;
case R.id.btn4:// 调小音量
// 获取当前的音乐音量
int volume = audioManager.getStreamVolume(AudioManager.STREAM_MUSIC);
Log.v("Volume", "volume" + volume);
// 音量>0
if (volume > 0) {
audioManager.adjustStreamVolume(AudioManager.STREAM_MUSIC, AudioManager.ADJUST_LOWER, 0);
} else {
return;
}
break;
case R.id.btn5:// 调大音量
volume = audioManager.getStreamVolume(AudioManager.STREAM_MUSIC);
// 音量<100
if (volume < audioManager.getStreamMaxVolume(AudioManager.STREAM_MUSIC)) {
audioManager.adjustStreamVolume(AudioManager.STREAM_MUSIC, AudioManager.ADJUST_RAISE, 0);
} else {
return;
}
break;
}
}
};
}
--------------------------------------------效果----------------------------------------------------
<!--EndFragment-->
发表评论
-
史上最快 Android N(安卓7.0)运行效率暴增至600%
2016-10-15 10:08 928谷歌I/O 2016开发者大会在公司总部正式拉开 ... -
So Easy京东商城
2014-12-10 16:51 1578So Easy京东商城 我和17位小伙伴们 ... -
过期Gallery取代方案horizontalscrollView之菜单导航效果
2014-03-23 16:19 2413效果 ------------------------- ... -
过期Gallery取代方案horizontalscrollView之京东效果
2014-03-23 15:57 3880效果 ------------------------- ... -
过期Gallery取代方案horizontalscrollView之幻灯片效果
2014-03-21 17:33 2621效果 ------------------------- ... -
tabhostandbadgeview
2014-03-19 13:45 1034效果 -------------------------- ... -
Android优秀开源项目大全
2014-03-18 15:17 1983以下是开源项目 1、and ... -
Android分页控件xlistview
2014-03-18 14:51 1673strings.xml ----------------- ... -
过期Gallery取代方案horizontalscrollView之普通画廊
2014-03-17 22:48 2443activity_main.xml ---------- ... -
viewpage
2014-03-17 18:08 1059strings.xml ----------------- ... -
FragmentStatePagerAdapter分页
2014-03-17 17:27 806ViewPager ViewPager 如 ... -
FragmentPagerAdapter与FragmentStatePagerAdapter差异
2014-03-17 17:20 1317简介 平常使用的FragmentPagerAdapter和F ... -
抽屉菜单
2014-03-16 12:51 1844strings.xml ----------------- ... -
px和dip以及sp的区别
2014-03-08 17:01 717显示单位px和dip以及sp的区别 dip: devi ... -
fragment生命周期
2014-03-06 16:59 890Fragment必须被写成可重用的模块。因为fragmen ... -
过期API_AlertDialog
2014-03-02 10:07 1151layout----------------------- ... -
Android_Jni 操作指南
2014-01-10 14:45 948Android_Jni 操作指南 NDK(Nati ... -
各种各样圆形进度条
2013-11-11 16:30 563http://www.apkbus.com/android-1 ... -
红杏出墙__实训版
2013-04-20 18:59 1082红杏出墙__实训版 -
google地图demo
2013-04-09 14:25 3203---------------------------- ...
相关推荐
在Android开发中,SurfaceView是一种特殊的视图,它允许开发者创建高性能的图形界面,尤其适合处理视频播放或游戏等需要连续刷新的场景。本话题主要探讨如何利用SurfaceView实现图片的缩放和滑动功能。 首先,理解...
在Android开发中,`SurfaceView`是一个特殊类型的`View`,它允许开发者在应用程序中创建一个独立于应用程序主线程的渲染表面。`SurfaceView`通常用于处理高性能的图形或者视频播放,因为它可以在单独的线程中进行...
android使用双缓冲辨析及surfaceview使用例子
`SurfaceView`是Android提供的一种用于高效显示多媒体数据的视图组件,尤其适合处理像视频流这样的实时数据。本篇文章将深入探讨如何利用`SurfaceView`实现实时显示摄像头视频。 首先,我们需要了解`SurfaceView`的...
在Android开发中,`SurfaceView`是一个非常重要的组件,它提供了与硬件图形渲染直接交互的能力。这个项目"android surfaceview自定义拍照 绘制头像轮廓"是基于网上现有的示例代码进行了修改,用于实现一个自定义的...
在Android开发中,`SurfaceView`是一个非常重要的视图组件,尤其在处理视频播放、游戏渲染等高性能图形操作时,它的优势在于拥有独立于主线程的渲染机制,能避免阻塞UI更新。然而,由于其特殊的性质,直接通过常规...
在Android开发中,SurfaceView是一种特殊的视图,它允许开发者创建高性能的图形界面,比如游戏、视频播放等需要频繁更新画面的应用。SurfaceView有一个特点,就是它的内容在窗口的最顶层,通常不会被其他普通View...
在Android开发中,SurfaceView是一种特殊的视图,它允许开发者在应用程序中创建高性能的图形界面,比如游戏或者视频播放器。SurfaceView具有自己的绘制表面,与主线程分离,因此可以进行独立于UI线程的高性能渲染。...
在Android平台上开发游戏时,SurfaceView是一个至关重要的组件,它为高效、低延迟的图形渲染提供了可能。SurfaceView是Android系统提供的一种特殊视图,它有自己的独立绘制表面,与主线程分离,使得游戏或者视频这类...
**Android SurfaceView 使用详解** `SurfaceView` 是 Android 系统提供的一种特殊的视图组件,它允许开发者在应用程序中创建高性能的图形界面,比如游戏、视频播放器等需要连续更新图像的应用。`SurfaceView` 提供...
在Android开发中,实现二维码和一维码扫描功能通常涉及到多个关键知识点,其中包括SurfaceView的使用、摄像头控制、图像处理以及二维码识别库的集成。以下将详细解释这些内容。 首先,`SurfaceView`是Android系统...
在Android开发中,SurfaceView是一种特殊的视图,它允许开发者在单独的线程中进行绘制操作,从而提高图形渲染性能,特别适用于需要连续更新显示内容的应用,如游戏、视频播放等。本示例中,"Android SurfaceView 多...
在Android开发中,SurfaceView是一种特殊的视图组件,它提供了在UI线程之外进行渲染的能力,使得复杂的动画或视频播放成为可能。在这个“android SurfaceView实现人物动画”的示例程序中,我们将深入探讨如何利用...
android中的surfaceview示例源码下载,Android SurfaceView在游戏开发中使用想当广泛,SurfaceView对于画面的控制有着更大的自由度,它不像View那样要用handler来更新,但是网上关于 SurfaceView使用这方面的参考...
这个场景就涉及到了Android的SurfaceView以及如何定制它的显示效果。本文将深入探讨如何实现一个圆形的相机预览窗口。 首先,让我们理解SurfaceView的基本概念。SurfaceView是Android系统提供的一种用于显示多媒体...
在Android开发中,`SurfaceView`是一个非常重要的视图组件,尤其在处理高性能图形和视频渲染时。`SurfaceView`提供了直接与硬件图形管道交互的能力,使得开发者可以在单独的线程中进行绘制,从而避免阻塞UI主线程,...
在Android开发中,SurfaceView是一种特殊的视图,它允许开发者在单独的线程中进行高性能的图形绘制,常用于游戏或者视频播放等需要连续更新显示内容的场景。本篇文章将详细探讨如何利用SurfaceView实现动画效果,...
在Android平台上,SurfaceView是一种特殊的视图,常用于处理高性能的图形渲染,比如播放视频或者游戏画面。在视频播放场景中,SurfaceView提供了一个高效且低延迟的显示机制,能够将视频帧直接绘制到Surface上,减少...
总之,通过SurfaceView实现实时显示摄像头视频是Android开发中的一个基础任务,涉及到对Android系统相机API的理解和使用,以及对SurfaceView生命周期的掌握。随着技术的发展,开发者可以选择更高级的API,如Camera2...
在Android开发中,`SurfaceView`是一个非常重要的组件,它为高效显示动态图像和视频提供了可能。本篇文章将深入探讨如何使用`SurfaceView`来实现加载GIF动画,这是一个常见的需求,特别是在游戏开发或者需要实时渲染...