- 浏览: 5820892 次
- 性别:
- 来自: 上海
文章分类
- 全部博客 (890)
- WindowsPhone (0)
- android (88)
- android快速迭代 (17)
- android基础 (34)
- android进阶 (172)
- android高级 (0)
- android拾遗 (85)
- android动画&效果 (68)
- Material Design (13)
- LUA (5)
- j2me (32)
- jQuery (39)
- spring (26)
- hibernate (20)
- struts (26)
- tomcat (9)
- javascript+css+html (62)
- jsp+servlet+javabean (14)
- java (37)
- velocity+FCKeditor (13)
- linux+批处理 (9)
- mysql (19)
- MyEclipse (9)
- ajax (7)
- wap (8)
- j2ee+apache (24)
- 其他 (13)
- phonegap (35)
最新评论
-
Memories_NC:
本地lua脚本终于执行成功了,虽然不是通过redis
java中调用lua脚本语言1 -
ZHOU452840622:
大神://处理返回的接收状态 这个好像没有监听到 遇 ...
android 发送短信的两种方式 -
PXY:
拦截部分地址,怎么写的for(int i=0;i<lis ...
判断是否登录的拦截器SessionFilter -
maotou1988:
Android控件之带清空按钮(功能)的AutoComplet ...
自定义AutoCompleteTextView -
yangmaolinpl:
希望有表例子更好。。。,不过也看明白了。
浅谈onInterceptTouchEvent、onTouchEvent与onTouch
只是上上手而已的例子。
android:theme="@android:style/Theme.NoTitleBar.Fullscreen"
<!--为屏蔽home健而加-->
<uses-permission android:name="android.permission.DISABLE_KEYGUARD"/>
package com.chenchen.app; import java.io.File; import java.io.FilenameFilter; import java.util.ArrayList; import java.util.List; import java.util.Random; import android.app.Activity; import android.content.Context; import android.media.MediaPlayer; import android.os.Bundle; import android.view.KeyEvent; import android.view.WindowManager; import android.widget.MediaController; import android.widget.Toast; import android.widget.VideoView; public class MainActivity extends Activity { private Context context; private VideoView videoView; /*视频文件分别放在三个文件夹中,需要到时候全部放入一个list中随机播放*/ private static final String MUSIC_PATH_1 = new String("/sdcard/qingbao/1/"); private static final String MUSIC_PATH_2 = new String("/sdcard/qingbao/2/"); private static final String MUSIC_PATH_3 = new String("/sdcard/qingbao/3/"); private List<String> mMusicList = new ArrayList<String>(); private int curIndex = 0;// Random r=new Random(); @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); context=this; listFiles(); } /* 播放列表 */ private void listFiles() { // 取得指定位置的文件设置显示到播放列表 File path_1 = new File(MUSIC_PATH_1); File[] list = path_1.listFiles(new MusicFilter()); if (list.length > 0) { for (File file : list) { mMusicList.add(MUSIC_PATH_1+file.getName()); } } File path_2 = new File(MUSIC_PATH_2); list = path_2.listFiles(new MusicFilter()); if (list.length > 0) { for (File file : list) { mMusicList.add(MUSIC_PATH_2+file.getName()); } } File path_3 = new File(MUSIC_PATH_3); list = path_3.listFiles(new MusicFilter()); if (list.length > 0) { for (File file : list) { mMusicList.add(MUSIC_PATH_3+file.getName()); } } } /* 过滤文件类型 */ class MusicFilter implements FilenameFilter { public boolean accept(File dir, String name) { // 这里还可以设置其他格式的文件 return (name.endsWith(".mp4")); } } @Override protected void onDestroy() { // TODO Auto-generated method stub super.onDestroy(); } @Override protected void onPause() { // TODO Auto-generated method stub super.onPause(); if(videoView!=null&&videoView.isPlaying()){ videoView.pause(); } } @Override protected void onResume() { // TODO Auto-generated method stub super.onResume(); startVideo(); } private void startVideo(){ videoView = (VideoView) findViewById(R.id.videoView); MediaController mc = new MediaController(context); videoView.setMediaController(mc); // videoView.setVideoURI(Uri.parse("http://....h.3gp")); videoView.requestFocus(); play(); videoView .setOnCompletionListener(new MediaPlayer.OnCompletionListener() { @Override public void onCompletion(MediaPlayer mp) { // TODO Auto-generated method stub play();//播放完毕再继续下一首 } }); videoView.setOnErrorListener(new MediaPlayer.OnErrorListener() { @Override public boolean onError(MediaPlayer mp, int what, int extra) { // TODO Auto-generated method stub play();//播放出错再继续下一首 return true; } }); } private void play(){ curIndex=r.nextInt(mMusicList.size()); videoView.setVideoPath(mMusicList.get(curIndex)); videoView.start(); } private long waitTime = 2000; private long touchTime = 0; @Override public boolean onKeyDown(int keyCode, KeyEvent event) { if (event.getAction() == KeyEvent.ACTION_DOWN && KeyEvent.KEYCODE_BACK == keyCode) { long currentTime = System.currentTimeMillis(); if ((currentTime - touchTime) >= waitTime) { Toast.makeText(context, "再按一次退出程序", Toast.LENGTH_SHORT).show(); touchTime = currentTime; } else { finish(); System.exit(0); } return true; }else if(KeyEvent.KEYCODE_HOME == keyCode){ return true; } return super.onKeyDown(keyCode, event); } @Override public void onAttachedToWindow () { /*本想屏蔽Home键,加上后播放器没画面,但有声音,why?*/ // this.getWindow().setType(WindowManager.LayoutParams.TYPE_KEYGUARD); super.onAttachedToWindow(); } }
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="vertical" android:layout_width="fill_parent" android:layout_height="fill_parent" android:gravity="center" > <VideoView android:id="@+id/videoView" android:layout_width="fill_parent" android:layout_height="fill_parent" /> </LinearLayout>
android:theme="@android:style/Theme.NoTitleBar.Fullscreen"
<!--为屏蔽home健而加-->
<uses-permission android:name="android.permission.DISABLE_KEYGUARD"/>
发表评论
-
利用广播实现强制下线功能
2016-12-28 10:45 1467最近一口气买 ... -
Android百分比布局Percent支持库
2015-09-02 11:08 3145虽然有很多的布局可以在 Android 应用程序开发的世界供我 ... -
ViewDragHelper行为测试
2015-08-12 17:36 2741只是简单记录一下 以后可能会实现一些效果 import ... -
android5.x之Palette调色板
2015-07-17 10:30 3340Palette类可以分析一张图片,取出这张图片的特征色,然后为 ... -
使用ClipboardManager剪贴板实现复制粘贴功能
2015-04-10 14:39 3773经常要使用复制粘贴的功能,比如长安一个TextView弹出一个 ... -
LocationListener监听位置变化,当进入到某一距离内时发出提醒
2014-08-19 15:03 7678项目中需要这样的要求: 启动一个服务一直在背后监听当前位置变化 ... -
Android下集成FacebookSDk到项目并发表评论
2013-08-28 14:36 4875项目中需要发表自己的评论到Facebook,需要集成Faceb ... -
MediaRecorder录音,MediaPlayer播放
2013-05-23 09:53 7542直接看代码 import java.io.DataOutp ... -
Notification的基本用法
2013-05-22 11:52 5958android4.0以前: private static ... -
android音频、视频、拍照基础操作
2013-03-27 11:55 2828播放音乐和视频用的是类:MediaPlayer 刻录声音和视 ... -
tabhost通过手势滑动切换activity
2013-02-18 17:59 11158package com.mars.mp3player; ... -
android 再按一次后退键退出应用程序
2012-06-15 21:51 4126private static Boolean isExit ... -
AlarmManager全局定时器/闹钟
2012-02-01 10:11 5861http://407827531.iteye.com/blog ... -
倒计时的CountDownTimer
2011-12-23 13:06 31239直接看这里吧,我只是搬运工。 定时执行在一段时候后停止的倒计 ... -
Android流量统计TrafficStats类的使用
2011-12-06 16:25 26461对于Android流量统计来说在2.2版中新加入了Traffi ... -
ScrollView当显示超出当前页面时自动移动到最底端
2011-09-01 09:42 17008卷轴视图(ScrollView)是指当拥有很多内容,一屏显示不 ... -
在SurfaceView上拖动一架飞机
2011-08-23 12:40 2933接上一篇在SurfaceView上拖动一张小图片 什么叫拖动飞 ... -
在SurfaceView上拖动一张小图片
2011-08-22 18:20 5243用手指随便拖。这里采用了线程去绘制,其实也可以在onTouch ... -
用getIdentifier()获取资源Id
2011-07-28 22:36 10768做项目过程中遇到一个问题,从数据库里读取图片名称,然后调用图片 ... -
利用VelocityTracker监控对触摸的速度跟踪
2011-07-28 22:12 10062VelocityTracker就是速度跟踪的意思。我们可以获得 ...
相关推荐
它是一个视图类,允许开发者在布局中嵌入视频播放功能,提供了简单易用的API来控制视频播放。本教程将深入讲解如何使用VideoView在Android应用中实现视频播放功能。 首先,你需要一个Android Studio开发环境,它是...
而VideoView则更适合简单的视频播放需求,因为它提供了更友好的API和开箱即用的功能。 总的来说,VideoView为开发者提供了一种便捷的方式来实现视频播放,而无需关心底层的复杂逻辑。如果你的应用只需要基本的视频...
综上所述,`VideoView`在Android中用于实现视频播放功能,通过设置视频源、监听播放状态、处理错误、自定义控制器等方式,可以构建出丰富的视频播放体验。在实际项目中,根据需求进行相应的优化和扩展,以满足用户的...
本篇文章将深入探讨如何使用VideoView进行视频播放,以及在实际应用中可能遇到的相关问题和解决策略。 首先,我们来了解VideoView的基本用法。在XML布局文件中,你可以通过添加<VideoView>标签来创建一个VideoView...
在Android开发中,VideoView是系统提供的一种用于播放视频的视图组件,...VideoView提供了一种简单易用的方式,但需要注意的是,对于更复杂的视频播放需求,如播放列表、手势控制等,可能需要结合其他库,如ExoPlayer。
在Android开发中,VideoView是Android SDK...总之,Android Studio的VideoView组件是一个简单易用的工具,它允许开发者轻松地在应用中集成网络视频播放功能。通过学习和实践,你可以创建出具有丰富视频内容的应用程序。
这个任务通常涉及到`VideoView`组件的使用,它提供了一个简单的接口来显示视频内容。本篇将详细介绍如何在Android中利用`VideoView`播放Rtsp视频,以及涉及到的相关技术点。 `VideoView`是Android SDK中的一个视图...
`VideoView`虽然简单易用,但不支持所有视频格式,对于更复杂的视频播放需求,开发者可能会转向使用ExoPlayer,这是一个由Google开发的更强大、更灵活的视频播放库。ExoPlayer提供了更多自定义选项,包括支持更多的...
VideoView是基于MediaPlayer库构建的,可以方便地在应用程序中嵌入视频播放功能。本Demo主要关注VideoView在播放过程中可能出现的缓冲和卡顿问题,以及如何通过监听和处理来优化用户体验。 一、VideoView缓冲与卡顿...
`VideoView`通常与`SeekBar`一起使用,用于展示视频播放进度。以下是一个简单的布局示例: ```xml android:layout_width="match_parent" android:layout_height="match_parent"> <VideoView android:id="@+id...
在Android开发中,VideoView是系统提供的一种用于播放视频的视图组件,它极大地简化了在应用程序中集成视频播放的功能。VideoView可以加载本地存储的视频文件或通过URL播放网络视频,非常适合创建简单的媒体播放器...
基于`VideoView`的视频播放DEMO是解决这类问题的一个简单而实用的方法。下面将详细阐述如何使用`VideoView`实现视频播放,并探讨"循环播放"这一特性。 `VideoView`是Android SDK提供的一种视图,它可以直接显示视频...
在Android开发中,VideoView是系统提供的一种用于播放视频的视图组件,它极大地简化了视频播放的功能。然而,为了满足更多个性化的需求,开发者经常需要对VideoView进行自定义,以便实现更丰富的功能,比如控制面板...
VideoView是Android SDK中的一个视图类,它允许开发者在应用中嵌入视频播放功能。VideoView支持多种视频格式,如*.3gp和*.mp4,这些格式通常在移动设备上较为常见。为了使用VideoView,你需要将视频文件存储在外部...
在本教程中,我们将深入探讨如何在Android Studio(AS)中使用 `VideoView` 进行视频播放。 首先,我们需要在布局文件中添加 `VideoView` 元素。以下是一个简单的示例: ```xml <VideoView android:id="@+id/...
总结,`VideoView`是Android中简单易用的视频播放组件,能够处理本地和网络视频播放,同时支持全屏模式。通过合理配置和错误处理,开发者可以为用户提供流畅的视频播放体验。然而,在处理大型或复杂视频需求时,推荐...
通过以上讲解,我们可以看到Android视频播放不仅仅是简单地展示视频,还包括了播放控制、全屏切换、自定义视图以及数据库管理等多个方面。理解并掌握这些知识点,对于开发具有高级视频功能的Android应用至关重要。
总之,VideoView是Android中一个简单易用的视频播放组件,通过合理的配置和监听,可以满足大多数简单的视频播放需求。然而,对于复杂的需求,如流媒体、多格式支持和高性能播放,开发者可能需要探索更专业的解决方案...
在Android开发中,`VideoView` 是一个非常实用的组件,它允许开发者在应用程序中集成视频播放功能。本文将深入探讨如何使用`VideoView`来播放Rtsp(Real-Time Streaming Protocol)流媒体内容,以及涉及到的相关技术...
在Android开发中,有时我们需要实现一个视频播放功能,特别是在列表视图(ListView)中嵌入视频播放器。这里,我们关注的是如何使用VideoView播放RTSP流并进行画面截图,同时自定义播放控制条。RTSP(Real-Time ...