首页 文章 精选 留言 我的

精选列表

搜索[解释器],共10000篇文章
优秀的个人博客,低调大师

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,如需转载请自行联系原作者

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

android手动调用振动器(Vibrator)

Vibrator vv=(Vibrator) getApplication().getSystemService(Service.VIBRATOR_SERVICE); vv.vibrate(500);//震半秒钟 vv.vibrate(new long[]{10, 100, 20, 200}, -1); 关于vv.vibrate(new long[]{10, 100, 20, 200}, -1); 参数1:表示停10ms, 震100ms, 停20ms,震200ms 参数2:-1 表示不重复,非-1表示从指定的下标开始重复震动! 注意 :如第二个参数是0, 则一圈一圈的循环震动下去了;如果是2,这第一遍震动后,从"20”这个参数开始再循环震动! 一般用vv.vibrate(500);//震半秒钟就行了 vv.cancel();//停止震动,基本只有在循环震动时才用得到这个 本文转自java豆子博客园博客,原文链接:http://www.cnblogs.com/error404/archive/2011/09/21/2184132.html,如需转载请自行联系原作者

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

dynamips模拟器模块详细介绍

为了方便大家做实验,免得一个一个去试,做这里我把每个设备支持的模块的信息都写出来.(bat文件) (针对刚刚接触dynamips不久的朋友) 注意:保证你的IOS版本在12.2S以上,在模拟交换时候为了保证实验能成功.IOS版本在12.4 首先从C7200开始 Slot 0: C7200-IO-FE <------> 支持1个Fastethernet接口 C7200-IO-2FE<------> 支持2个 Fastethernet接口 (DynamipsGUI 2.3 里面没有这个选项,想用只有自己添加了) C7200-IO-GE-E <------> 插这个卡以后会同时出现2个端口,Ethernet0/0和GigabitEthernet0/0 (反正我没有用到过这个卡) 注意:这三个卡只允许插在Slot0口,如果插入后面的slot口是无效的. Slot 1-5: PA-2FE-TX <------> 支持2个Fastethernet接口 PA-FE-TX<------> 支持1个Fastethernet接口 PA-4E <------> 支持4个Ethernet接口 PA-4T+ <------> 支持4个serial接口 PA-8E <------> 支持8个Ethernet接口 PA-8T <------> 支持8个serial接口 PA-A1 <------> 支持1个ATM port adapter接口 PA-GE <------> 支持1个GigabitEthernet接口 PA-POS-OC3<------> 支持1个Packet Over SONET/SDH接口(用于更高速度的接口) 然后是C3600(3620/3640/3660) NM-16ESW <------> 支持16个Fastethernet接口(交换模块,在使用此模块做交换实验时候,请使用no ip routing 关闭端口路由) NM-1E <------> 支持1个Ethernet接口 NM-1FE-TX<------> 支持1个Fastethernet接口 NM-4E <------> 支持4个Ethernet接口 NM-4T <------> 支持4个serial接口 Leopard-2FE<------>支持2个Fastethernet接口(3660专用,并且只能在slot 0 下使用) 注 意:3620只能使用2个slot,3640可以使用4个slot,除Leopard-2FE模块做了限制,其他模块没有做限制插具体哪个slot. (DynamipsGUI里对slot已经做了限制,最近DynamipSeeV2.0已经发布了,但是里面不支持3660) c3725/c3745/c2691 GT96100-FE <------>支持2个Fastethernet接口(只限制在slot 0) NM-16ESW <------>支持16个Fastethernet接口(不做重复说明) NM-1FE-TX<------>支持1个Fastethernet接口 NM-4T <------>支持4个serial接口 c2600(2610/2611/2620/2621/2610XM/2620XM/2650XM) NM-16ESW <------> 支持16个Fastethernet接口 NM-1E <------> 支持1个Ethernet接口 NM-1FE-TX<------> 支持1个Fastethernet接口 NM-4E <------> 支持4个Ethernet接口 CISCO2600-MB-2E<------>支持2个Ethernet接口 CISCO2600-MB-2FE<------>支持2个Fastethernet接口 注>DynamipsGUI里的模块CISCO2600-MB-2E,CISCO2600-MB-2FE,并且只有2620类型可选 Dynamipsee里有2610/2611/2620/2621/2610XM/2620XM/2650XM类型选择.但没有2610/2611/2620/2621/2610XM/2620XM/2650XM 建议找个小的IOS把2600模拟成主机用 本文转自loveme2351CTO博客,原文链接:http://blog.51cto.com/loveme23/27869,如需转载请自行联系原作者

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

iOS 小项目--小费计算器

这个例子是 iPhone应用程序开发名师解析 上的一个小例子,基于Xcode4.3.1的工程开发 效果截图: 1.创建一个新工程叫TipCalculator; File->New->Project ->single View Application -> next. 2.布局界面 其中包含9个静态Label标签一个动态Label标签,他根据slider值的变化而能变化,然后是9个Textfield和一个slider滑动条 另外需要对TextField属性设置,text设置为0.00,然后键盘选择成Number Pad类型的,只需要对第一个最长的TextfIeld设置一下键盘类型就行,其他的不用设置,其他的8个标签显示了灰色数字,设置的是Placeholder属性; 3.设计代码,我们选择左上角的Editor图标,点击出现视图编辑框分为XIB文件,和TipCalculatorViewController.h文件 如果没有出现TipCalculatorViewController.h,我们可以根据Automatic文件进行切换 4.右键选中最长的那个TextField文件拖动到右边TipCalculatorViewController.h文件@end前面, 然后弹出一个框框,Connection选为Outlet,Storage选为Strong, 5.这样我们第一个TextField关联成功,其他的一样, 关联Slider时候,我们对他设置一些属性,(原本是最小值设为0最大值设为0.3但是我在拖动滑动条时候滑动条总是自动变为0,这样修改后问题就可以解决了),他还有一个和calculate的关联方法, 我们还需要添加两个方法,并声明一个NSString类的对象 总的代码为 #import <UIKit/UIKit.h> @interface TipCalculatorViewController : UIViewController { NSString *billTotal; } @property (strong, nonatomic) IBOutlet UITextField *billField; @property (strong, nonatomic) IBOutlet UITextField *tipFieldTen; @property (strong, nonatomic) IBOutlet UITextField *tipFieldFifteen; @property (strong, nonatomic) IBOutlet UITextField *tipFieldTwenty; @property (strong, nonatomic) IBOutlet UITextField *totalFieldTen; @property (strong, nonatomic) IBOutlet UITextField *totalFieldFifteen; @property (strong, nonatomic) IBOutlet UITextField *totalFieldTwenty; @property (strong, nonatomic) IBOutlet UITextField *tipFieldCustom; @property (strong, nonatomic) IBOutlet UITextField *totalFieldCustom; @property (strong, nonatomic) IBOutlet UISlider *customPercentSlider; @property (strong, nonatomic) IBOutlet UILabel *customLabel; -(IBAction)calculate:(id)sender;//计算小费 -(IBAction)backGrounfTap:(id)sender;//处理隐藏键盘 @end 6.因为本人在拖控件是界面设计的不够好,弹出键盘时会覆盖住下面两个TextField,所以添加了一个隐藏键盘的方法,我们把整个背景View视图当做一个大按钮,当输入完金额后点击背景就会隐藏键盘,还是选中XIB文件,然后把View类修改UIControl,然后打开关联事件,选中Touch Down 然后会弹出两个方法,backGrounfTap和calculate(注.原本是想写成backGroundTap,单词写错了变成backGrounfTap,为了其他地方不再修改,就按照backGrounfTap写了),xuanzhbackGrounfTap方法, //处理键盘 -(IBAction)backGrounfTap:(id)sender { [billField resignFirstResponder]; [tipFieldCustom resignFirstResponder]; [totalFieldCustom resignFirstResponder]; } 为什么只把三个TextField注册为了第一响应,完全按照自己意愿添加,但是最低我们要保证billField第一个添加上,其他的想添加不想添加都无所谓,只是个人觉得多添加的两个体验会好一点; 7.主要就是calculate方法实现部分 //当调出的键盘被触摸了某个数时或者某个按钮调用此方法 -(IBAction)calculate:(id)sender { // 标记是否是由用户触发 static BOOL toggle =YES; if (toggle) { // 设置标志位,此方法的下次调用由程序触发 toggle=NO; // 取出billField文本值 NSString *billFieldText = billField.text; // 将billFieldText字符串类型转换成浮点型 float newTotal = [billFieldText floatValue]; // 获取滑动条的值 float customTipPercent = customPercentSlider.value; // 事件由billField触发 if (sender == billField) { // 通过比较billField字符长度,检测billField值是否改变 if(billFieldText.length < billTotal.length) billTotal = [NSString stringWithFormat:@"%.02f",newTotal/10]; // 用户输入数字 else billTotal = [NSString stringWithFormat:@"%.02f",newTotal*10]; // 取出billTotal赋给billField文本值 billField.text = billTotal; // 将billTotal转换成浮点型,newTotal设置为新值 newTotal = [billTotal floatValue]; // 按照10% 15% 20%计算小费值 float tenTip = newTotal*0.1; float fifteenTip = newTotal*0.15; float twentyTip = newTotal*0.2; // 显示Tip栏小费值 tipFieldTen.text = [NSString stringWithFormat:@"%.02f",tenTip]; tipFieldFifteen.text = [NSString stringWithFormat:@"%.02f",fifteenTip]; tipFieldTwenty.text = [NSString stringWithFormat:@"%.02f",twentyTip]; // 设置toatal栏中显示值 totalFieldTen.text = [NSString stringWithFormat:@"%.02f",newTotal+tenTip]; totalFieldFifteen.text = [NSString stringWithFormat:@"%.02f",newTotal+fifteenTip]; totalFieldTwenty.text = [NSString stringWithFormat:@"%.02f",newTotal+twentyTip]; } // 当事件由customPercentSlider触发时 else if (sender == customPercentSlider) { // 显示滑动条变化值 customLabel.text = [NSString stringWithFormat:@"%i%%",(int)customTipPercent]; // 把按钮值赋给滑动条的值,其中对浮点型值进行了强制转换 customPercentSlider.value=(int)customTipPercent; customTipPercent = (int)customTipPercent; } // 计算小费,因为滑动条值为0~30,所以需要除以100求出小费率 float customTip = customTipPercent/100 * newTotal; tipFieldCustom.text = [NSString stringWithFormat:@"%.02f",customTip]; // 表示应付的总金额 totalFieldCustom.text =[NSString stringWithFormat:@"%.02f",customTip+newTotal]; } else { toggle=YES; } } 8.当我们输入时候,有个特别要求,假如用户小费12元,我们应输入1200,然后他们会自动变成12.00元,主要通过 通过比较 if billTotal 用户输入数字 else billTotal 实现方法,通过比较billField原来字符串长度检测用户是否改变金额,来变得小费和总的金额; 源代码:http://download.csdn.net/detail/duxinfeng2010/4464095 本文转自新风作浪 51CTO博客,原文链接:http://blog.51cto.com/duxinfeng/1208729,如需转载请自行联系原作者

资源下载

更多资源
Nacos

Nacos

Nacos /nɑ:kəʊs/ 是 Dynamic Naming and Configuration Service 的首字母简称,一个易于构建 AI Agent 应用的动态服务发现、配置管理和AI智能体管理平台。Nacos 致力于帮助您发现、配置和管理微服务及AI智能体应用。Nacos 提供了一组简单易用的特性集,帮助您快速实现动态服务发现、服务配置、服务元数据、流量管理。Nacos 帮助您更敏捷和容易地构建、交付和管理微服务平台。

Spring

Spring

Spring框架(Spring Framework)是由Rod Johnson于2002年提出的开源Java企业级应用框架,旨在通过使用JavaBean替代传统EJB实现方式降低企业级编程开发的复杂性。该框架基于简单性、可测试性和松耦合性设计理念,提供核心容器、应用上下文、数据访问集成等模块,支持整合Hibernate、Struts等第三方框架,其适用范围不仅限于服务器端开发,绝大多数Java应用均可从中受益。

Rocky Linux

Rocky Linux

Rocky Linux(中文名:洛基)是由Gregory Kurtzer于2020年12月发起的企业级Linux发行版,作为CentOS稳定版停止维护后与RHEL(Red Hat Enterprise Linux)完全兼容的开源替代方案,由社区拥有并管理,支持x86_64、aarch64等架构。其通过重新编译RHEL源代码提供长期稳定性,采用模块化包装和SELinux安全架构,默认包含GNOME桌面环境及XFS文件系统,支持十年生命周期更新。

WebStorm

WebStorm

WebStorm 是jetbrains公司旗下一款JavaScript 开发工具。目前已经被广大中国JS开发者誉为“Web前端开发神器”、“最强大的HTML5编辑器”、“最智能的JavaScript IDE”等。与IntelliJ IDEA同源,继承了IntelliJ IDEA强大的JS部分的功能。

用户登录
用户注册