首页 文章 精选 留言 我的

精选列表

搜索[编写],共10005篇文章
优秀的个人博客,低调大师

android 编写简易视频播放器

public class VideoActivity extends Activity {private static final String TAG = "VideoActivity";private EditText filenameText;private SurfaceView surfaceView;private MediaPlayer mediaPlayer; @Overridepublic void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState); setContentView(R.layout.main); ButtonClickListener listener = new ButtonClickListener(); ImageButton playButton = (ImageButton) this.findViewById(R.id.play); playButton.setOnClickListener(listener); ImageButton pauseButton = (ImageButton) this.findViewById(R.id.pause); pauseButton.setOnClickListener(listener); ImageButton resetButton = (ImageButton) this.findViewById(R.id.reset); resetButton.setOnClickListener(listener); ImageButton stopButton = (ImageButton) this.findViewById(R.id.stop); stopButton.setOnClickListener(listener);// 重点 这个地方需要设置回调函数 继承Callback 类实现三个方法 surfaceView.getHolder().addCallback(new myCallback()); filenameText = (EditText) this.findViewById(R.id.filename); surfaceView = (SurfaceView) findViewById(R.id.surfaceView); surfaceView.getHolder() .setType(SurfaceHolder.SURFACE_TYPE_PUSH_BUFFERS);// 设置这个大小 surfaceView.getHolder().setFixedSize(176, 144); mediaPlayer = new MediaPlayer(); }private class myCallback implements android.view.SurfaceHolder.Callback { @Overridepublic void surfaceChanged(SurfaceHolder holder, int format, int width,int height) {// TODO Auto-generated method stub } @Overridepublic void surfaceCreated(SurfaceHolder holder) {// TODO Auto-generated method stub } @Overridepublic void surfaceDestroyed(SurfaceHolder holder) {// TODO Auto-generated method stub } }// 当来电话的时候需要停掉播放业务@Overrideprotected void onPause() {if (mediaPlayer.isPlaying()) mediaPlayer.pause();super.onPause(); } @Overrideprotected void onResume() {if (mediaPlayer.isPlaying()) mediaPlayer.pause();super.onResume(); } @Overrideprotected void onDestroy() {if (mediaPlayer.isPlaying()) mediaPlayer.stop();// 注意这个地方是释放 mediaPlayer.release();super.onStop(); }private class ButtonClickListener implements View.OnClickListener { @Overridepublic void onClick(View v) {try { String filename = filenameText.getText().toString();switch (v.getId()) {case R.id.play:// 得到文件名称 重点代码 String filenames = filenameText.getText().toString();// 第一步对给对象进行重设 mediaPlayer.reset();// 设置流的类型 关键代码 mediaPlayer.setAudioStreamType(AudioManager.STREAM_MUSIC);// 设置数据来源 mediaPlayer.setDataSource("/sdcard/" + filenames); // 设置需要播放的视频// 把视频输出到显示控件上 重点代码 mediaPlayer.setDisplay(surfaceView.getHolder());// 播放时前需要缓冲一下 mediaPlayer.prepare(); mediaPlayer.start();break;case R.id.pause:if (mediaPlayer.isPlaying()) { mediaPlayer.pause(); } else { mediaPlayer.start(); }break;case R.id.reset:if (!mediaPlayer.isPlaying()) { mediaPlayer.start(); }// 跳回到起始的地方重新播放 mediaPlayer.seekTo(0);break;case R.id.stop:if (mediaPlayer.isPlaying()) { mediaPlayer.stop(); }break; } } catch (Exception e) { Log.e(TAG, e.toString()); } } } } 本文转自java豆子博客园博客,原文链接:http://www.cnblogs.com/error404/archive/2011/08/25/2153546.html,如需转载请自行联系原作者

优秀的个人博客,低调大师

《PHP精粹:编写高效PHP代码》——导读

目 录 第1章 面向对象编程1.1 为什么要使用面向对象编程1.2 OOP简介1.3 对象的继承1.4 对象和函数1.5 public、private以及protected1.6 接口1.7 异常1.8 更多神奇的方法1.9 本章小结第2章 数据库2.1 数据持久化和Web应用程序2.2 选择如何存储数据2.3 用MySQL建立一个食谱网站2.4 PHP数据库对象2.5 处理PDO中的错误2.6 高级PDO特征2.7 设计数据库2.8 数据库—排序第3章 API3.1 开始之前3.2 面向服务的架构3.3 数据格式3.4 HTTP:超文本传输协议3.5 设计一个Web服务3.6 提供的服务

优秀的个人博客,低调大师

前瞻:Flutter 编写的全新 Ubuntu 安装程序

在两年前,我们就报道过 Canonical 的设计团队和 Ubuntu 桌面团队正在为 Ubuntu 开发一套新的安装程序。该安装程序将会充分利用 Flutter、Curtin(旨在快速安装 Ubuntu) 和 Subiquity(Ubuntu Server 安装程序和设置工具) 等技术的优势。 之所以要开发一套全新的安装程序,这其中最主要的原因还是现有技术的老化。Ubuntu 目前使用的桌面端镜像文件采用的还是基于 Ubiquity 的安装程序,而 Ubiquity 最早是于 2010 年首次推出,在当时它具有不错的功能性和适度的快速性,不过随着时间的推移,Ubiquity 古老且复杂的代码库所引发的问题就暴露出来了。 时间来到 2023 年,距离最初宣布已经过了两年,随着即将到来的 Ubuntu 23.04(Lunar Lobster),Canonical 似乎也已经准备好为其 Ubuntu 系统部署这个全新开发的安装程序了。 这个新的基于 Flutter 的安装程序已经存在一段时间了,不过目前想要试用它的话,用户必须下载 Ubuntu 23.04 的每日构建版,该版本现在已经默认使用新版安装程序来代替旧的带有 GTK 界面的 Ubiquity。 新的安装程序具有一个更加现代一些、也稍微美观一点的用户界面,除此之外,新的安装程序启动与旧的安装程序看起来没有太大的差异,并且安装流程和功能与之前的安装程序也基本相同。 不过新版本的安装程序在整个安装流程中改进了一些选项,并增加了一些初始设置。以下图为例,与原本的语言选择页面相比,新版本更好地将键盘布局选择与语言页面结合在了起来,而不是将其分割成两个不同的选择页面。 在新增的设置中,用户现在可以一开始就选择是否连接到 Wi-Fi 网络,以及在安装系统时就选择使用浅色或深色主题。 可以选择标准的 Ubuntu Linux 桌面安装或最小安装,也可以在安装时选择专有的图形驱动和 WiFi 支持,以及额外的多媒体编解码器。 默认情况下,Ubuntu 23.04 继续以 EXT4 作为文件系统选择。考虑到 F2FS(Flash-Friendly File System)已经成为 EXT4 的一个重要竞争对手,以及 F2FS 已经被广泛使用。Ubuntu 新的安装程序并没有一个让用户容易选择 F2FS 的选项,虽然用户可以通过 "Something else" 区域来设置,相对而言还是没有那么方便快捷。 原本 Ubuntu 具有原生的 Active Directory 集成功能,运行 Ubuntu 的设备可以在安装时加入 Active Directory (AD) 域以进行集中配置。Active Directory 管理员可以管理 Ubuntu 设备并从 Active Directory 域控制器配置系统设置。 但新的安装程序中暂时没有对 Active Directory 的支持,目前还不清楚 Canonical 是否会在 Ubuntu 23.04 发布前实现它。除此之外,在安装过程中下载更新的功能也暂时还没有。 最后,就是在安装后的 "安装完成" 界面,新版安装程序现在提供了一个关闭系统的选项。 总的来说,与之前的 Ubiquity 安装程序相比,新版本除了底层发生了巨大变化,在使用过程中用户可感知的变化还是比较小的。 这就是目前最新的 Ubuntu 23.04 安装程序的情况,在 4 月正式发布之前,Ubuntu 23.04 的安装程序可能还会有进一步的改进。如果你想尝试一下新的安装程序,你可以从这里下载最新的 Ubuntu 23.04 每日构建版。由于这是操作系统的预发布版本,在生产设备上安装该系统前请一定要仔细考虑清楚。 更多截图:

资源下载

更多资源
Mario

Mario

马里奥是站在游戏界顶峰的超人气多面角色。马里奥靠吃蘑菇成长,特征是大鼻子、头戴帽子、身穿背带裤,还留着胡子。与他的双胞胎兄弟路易基一起,长年担任任天堂的招牌角色。

Oracle

Oracle

Oracle Database,又名Oracle RDBMS,或简称Oracle。是甲骨文公司的一款关系数据库管理系统。它是在数据库领域一直处于领先地位的产品。可以说Oracle数据库系统是目前世界上流行的关系数据库管理系统,系统可移植性好、使用方便、功能强,适用于各类大、中、小、微机环境。它是一种高效率、可靠性好的、适应高吞吐量的数据库方案。

Eclipse

Eclipse

Eclipse 是一个开放源代码的、基于Java的可扩展开发平台。就其本身而言,它只是一个框架和一组服务,用于通过插件组件构建开发环境。幸运的是,Eclipse 附带了一个标准的插件集,包括Java开发工具(Java Development Kit,JDK)。

JDK

JDK

JDK是 Java 语言的软件开发工具包,主要用于移动设备、嵌入式设备上的java应用程序。JDK是整个java开发的核心,它包含了JAVA的运行环境(JVM+Java系统类库)和JAVA工具。