解决Win7电脑扬声器在耳机插入情况下依然响的问题

环境:
Windows 7 Ultimate

出现问题:

  1. 睡眠之后使用耳机,电脑扬声器依然有声音
  2. 间歇性的插入耳机,扬声器还响


解决方法:

  1. 重启,最简单却又是最烦的方法。
  2. 打开控制面板--硬件和声音--Realtek高清晰音频设备管理器--然后再插入耳机,此时会提醒你耳机已经插入,点击确定即可。然后电脑扬声器就没有声音了。


购物记录:Targus泰格斯

参数:
主体
品牌 Targus(泰格斯)
型号 TSB227AP
类别 笔记本电脑双肩包
适用范围 适用于15.6寸及以内笔记本
规格
产品尺寸 约32 x 18 x 46 cm
内部尺寸 约37.47 x 3.89 x 26.06 cm
重量 约850g
颜色 黑色/红色
材质 尼龙
特性
特性 尼龙

泰格斯中国风背包最大可容纳15.6“宽屏笔记本,集运动时尚与坚固耐用性于一身。背包专为在各种天气情况使用而设计,采用防溢水材料,并配备一个隐藏的防雨罩。这款背包具有现代气息,让您工作休闲两相宜。
产品性能:
1.采用防溢水材料
2.除加垫笔记本隔间外,还配备一个内置二个网袋的拉链口袋
3.舒适背板,及可调节的肩带,携带舒适
这款背包最大可容纳15.6“宽屏笔记本,集功能性与舒适性于一身。背包专为在各种天气情况使用而设计,采用防溢水材料,并配备一个隐藏的防雨罩。这款背包是为商旅专业人士提供的兼具时尚和实用平衡性的完美选择。
产品性能: 1.采用防溢水材料,底部有可收藏的防雨套
2.除加垫笔记本隔间外,还配备一个内置二个网袋的拉链口袋
3.舒适背板,及可调节的肩带,携带舒适
4.红色装饰让背包外观时尚而稳重。
4.特别设有耳机出孔,方便享受音乐

当时在当当网买的~~~
http://product.dangdang.com/product.aspx?product_id=60327560

常用Intent

以下是常用到的Intent的URI及其示例,包含了大部分应用中用到的共用Intent

一、打开一个网页,类别是Intent.ACTION_VIEW

Uri uri = Uri.parse("http://www.android-study.com/");
Intent intent = new Intent(Intent.ACTION_VIEW, uri);

二、打开地图并定位到一个点

Uri uri = Uri.parse("geo:52.76,-79.0342");
Intent intent = new Intent(Intent.ACTION_VIEW, uri);

三、打开拨号界面,类型是Intent.ACTION_DIAL

Uri uri = Uri.parse("tel:10086");
Intent intent = new Intent(Intent.ACTION_DIAL, uri);

四、直接拨打电话,与三不同的是,这个直接拨打电话,而不是打开拨号界面

Uri uri = Uri.parse("tel:10086");
Intent intent = new Intent(Intent.ACTION_CALL, uri);

五、卸载一个应用,Intent的类别是Intent.ACTION_DELETE

Uri uri = Uri.fromParts("package", "xxx", null);
Intent intent = new Intent(Intent.ACTION_DELETE, uri);

六、安装应用程序,Intent的类别是Intent.ACTION_PACKAGE_ADDED

Uri uri = Uri.fromParts("package", "xxx", null);
Intent intent = new Intent(Intent.ACTION_PACKAGE_ADDED, uri);

七、播放音频文件

Uri uri = Uri.parse("file:///sdcard/download/everything.mp3");
Intent intent = new Intent(Intent.ACTION_VIEW, uri);
intent.setType("audio/mp3");

八、打开发邮件界面

Uri uri= Uri.parse("mailto:admin@android-study.com");
Intent intent = new Intent(Intent.ACTION_SENDTO, uri);

九、发邮件,与八不同这里是将邮件发送出去

Intent intent = new Intent(Intent.ACTION_SEND);
String[] tos = { "admin@android-study.com" };
String[] ccs = { "webmaster@android-study.com" };
intent.putExtra(Intent.EXTRA_EMAIL, tos);
intent.putExtra(Intent.EXTRA_CC, ccs);
intent.putExtra(Intent.EXTRA_TEXT, "I come from http://www.android-study.com");
intent.putExtra(Intent.EXTRA_SUBJECT, "http://www.android-study.com");intent.setType("message/rfc882");
Intent.createChooser(intent, "Choose Email Client");

//发送带附件的邮件

Intent intent = new Intent(Intent.ACTION_SEND);
intent.putExtra(Intent.EXTRA_SUBJECT, "The email subject text");
intent.putExtra(Intent.EXTRA_STREAM, "file:///sdcard/mysong.mp3");
intent.setType("audio/mp3");
startActivity(Intent.createChooser(intent, "Choose Email Client"));

十、发短信

Uri uri= Uri.parse("tel:10086");
Intent intent = new Intent(Intent.ACTION_VIEW, uri);
intent.putExtra("sms_body", "I come from http://www.android-study.com");
intent.setType("vnd.Android-dir/mms-sms");

或者可以
Intent intent = new Intent(Intent.ACTION_VIEW);
intent.putExtra("address", "电话号码,这里是电话");
intent.putExtra("sms_body","短信内容,短信");
intent.setType("vnd.android-dir/mms-sms");
startActivity(intent);


十一、直接发短信

Uri uri= Uri.parse("smsto://100861");
Intent intent = new Intent(Intent.ACTION_SENDTO, uri);
intent.putExtra("sms_body", "3g android http://www.android-study.com");

十二、发彩信

ri uri= Uri.parse("content://media/external/images/media/23");
Intent intent = new Intent(Intent.ACTION_SEND);
intent.putExtra("sms_body", "3g android http://www.android-study.com");
intent.putExtra(Intent.EXTRA_STREAM, uri);
intent.setType("image/png");

十三、# Market 相关

1 //寻找某个应用
Uri uri = Uri.parse("market://search?q=pname:pkg_name");
Intent it = new Intent(Intent.ACTION_VIEW, uri);
startActivity(it);
//where pkg_name is the full package path for an application
 
2 //显示某个应用的相关信息
Uri uri = Uri.parse("market://details?id=app_id");
Intent it = new Intent(Intent.ACTION_VIEW, uri);
startActivity(it);
//where app_id is the application ID, find the ID
//by clicking on your application on Market home
//page, and notice the ID from the address bar

十四、路径规划

Uri uri = Uri.parse("http://maps.google.com/maps?f=d&saddr=startLat%20startLng&daddr=endLat%20endLng&hl=en");
Intent it = new Intent(Intent.ACTION_VIEW, uri);
startActivity(it);
//where startLat, startLng, endLat, endLng are a long with 6 decimals like: 50.123456

十五、安装指定apk

public void setupAPK(String apkname){
    String fileName = Environment.getExternalStorageDirectory() + "/" + apkname;
    Intent intent = new Intent(Intent.ACTION_VIEW);
    intent.setDataAndType(Uri.fromFile(new File(fileName)), "application/vnd.android.package-archive");
    mService.startActivity(intent);
}

十六、进入联系人页面

Intent intent = new Intent();
intent.setAction(Intent.ACTION_VIEW);
intent.setData(People.CONTENT_URI);
startActivity(intent);

十七、查看指定联系人

Uri personUri = ContentUris.withAppendedId(People.CONTENT_URI, info.id);// info.id联系人ID
Intent intent = new Intent();
intent.setAction(Intent.ACTION_VIEW);
intent.setData(personUri);
startActivity(intent);

十八、调用相册

public static final String MIME_TYPE_IMAGE_JPEG = "image/*";
public static final int ACTIVITY_GET_IMAGE = 0;
Intent getImage = new Intent(Intent.ACTION_GET_CONTENT);
getImage.addCategory(Intent.CATEGORY_OPENABLE);
getImage.setType(MIME_TYPE_IMAGE_JPEG);
startActivityForResult(getImage, ACTIVITY_GET_IMAGE);

十九、调用系统相机应用程序,并存储拍下来的照片

Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
time = Calendar.getInstance().getTimeInMillis();
intent.putExtra(MediaStore.EXTRA_OUTPUT, Uri.fromFile(new File(Environment
.getExternalStorageDirectory().getAbsolutePath()+"/tucue", time + ".jpg")));
startActivityForResult(intent, ACTIVITY_GET_CAMERA_IMAGE);

http://www.verydemo.com/demo_c131_i16393.html

Android开发过程中遇到的小问题

Android ProgressBar有一个属性indeterminate
这个属性值用来控制进度条是否为确定性进度条.确定性进度条是指在任务执行过程中,可以数值化当前进度(比如,已经完成50%) 。不确定性进度条是那种除非任务完成,否则不能数值化进度,所以我们会看到一个无限循环的动画。
http://www.lxzhu.net/blogcn/tags/progressbar
通过设置进度条android:indeterminate="true"为不确定.
如果想要设置进度条一直为进度不确定可以通过设置android:indeterminateOnly="true",否则设置为false

http://thinkblog.sinaapp.com/?p=732

[Accessibility] Missing contentDescription attribute on image

在下ADT 16.0 在定义一个ImageVIew的时候 总是提示这个[Accessibility] Missing contentDescription attribute on image警告,虽说可以不理 但总是感觉怪怪的,在网上一搜 发现原来这是ADT 16.0的新特性,在一些没有文本显示的控件里,如imageView和imageButton等,ADT会提示你定义一个android:contentDescription属性,用来描述这个控件的作用。

http://blog.csdn.net/hn307165411/article/details/7179317

购物记录:Sennheiser HD201

耳机坏了,所以买了一个头戴式的森海塞尔HD201,后来才发现当时的决定是错误的。当时入手价159。现在看来还是比较便宜的。这也是在“易迅”的第一单。
地址:http://item.51buy.com/item-705.html

HD201依然使用了该系列经典的黑色调,而耳罩背面则有一个椭圆形冷银色的区域,这样的搭配还是蛮不错的。另外,它还采用了很受欢迎的双边出线方式,其线材富有弹性、不容易缠结。从整体看上去,HD201透露着一种低调而专业的HiFi气质。

包装清单
耳机1副
转换插头1个
保修卡1张
品牌类型
品牌 Sennheiser 森海塞尔
型号 HD201
佩带方式 头戴式
类型 耳机
功能用途 监听/HIFI
颜色 黑色
耳机参数
换能方式 动圈封闭式
频率响应 21-18000Hz
灵敏度 108dB
阻抗 24欧姆
功率 N/A
单元直径 (@1KHz,1Vrms) 108db
失真率 <0.7 %
线长 双边出线方式
接口参数 3.5MM直插
麦克风参数
响应频率 N/A
抗阻 N/A
灵敏度 N/A
麦克风规格 N/A
其他特点
产品特点 强大的立体声
丰富清脆的低音
配戴舒适轻巧
良好的减燥性
乐声层次感极强
高品质的耳机衬垫
6.3mm适配器,镀金接头
售后服务
保修期 两年保修
保修点及联系方式 保修请直接联系易迅售后,售后服务电话:400-640-1878

购物记录:TOSHIBA CANVIO DESK 系列2T硬盘

写完两篇购物记录文章之后,我觉得有必要把我大学以来买过的东西一一列举出来,作为回忆也好,作为记录也好,作为分享也好,总是件乐事。
今年年初过年前入手的2T硬盘,用来备份资料,电影,歌曲,目前新蛋网上价格依然还是599,不过当时入手的时候有“蛋券”所以其实只付了579。
这里补充下参数呗,因为我突然发现之前写的那篇文章不在我的购物记录系列中
TOSHIBA 东芝 CANVIO DESK 系列 3.5英寸 USB3.0 2TB 移动硬盘 黑色 HDWC120HK3JA/HDWC120AK3J1
● 传输接口 :USB3.0
● 传输速度: 最高5Gb/s
● 外观尺寸:167mm(H)*42mm(W)*129mm(I)
● 重量: 1,000g max
● 保固期限:三年有限保固
● 环境信息:符合RoHS规范
● 兼容性: Microsoft Windows7 Vista 或XP
● 安装系统使用需求:于Mac OS r X Tiger &snow leopard 环境下需要自行格式化适用USB2.0Y以及USB3.0端口
● 产品包装内容物:
东芝凯乐(内附备份软件)
USB3.0连接线
ACPOWER 转接头
快速安装指南(Quick Start Guide)

● 感受USB3.0超快速的传输档案的体验
● 存储容量最高2TB、3TB
● 可向下兼容2.0
● 完整计算机系统备份及支持还原修复功能
● 提供存储空间不足的预警功能
● 适用于桌上型和膝上型计算机,即插即用

其实在买这个硬盘之前我完全不知道“新蛋”这个网站,后来才渐渐的知道原来新蛋在美国也是挺出名的,主卖电子产品的电商。

购物记录:Philips/飞利浦 SHE8005

我想买个耳机,在广大基友的推荐下,我最终选择了Philips(飞利浦)SHE8005,原因如下:
我想买一个既能够手机使用,又能够电脑使用的耳机,平时出门也不方便将我的头戴式HD201带出去
我想买一个耳塞式的,听说入耳式的对耳朵有伤害
我想买一个能够使用久一点的,价格也不要太贵的
我想买一个最好带有线控的。

综合好友的推荐,我最终选择停留在森海塞尔MX80,MX170,飞利浦SHE8005,还有其他一些产品上面,而森海塞尔是大家一致口碑不错的,唯一让我不爽的就是没有线控,所以最终选择了飞利浦的。

产品名称:Philips/飞利浦 SHE8005
颜色分类: 送耳机袋+集线器+鼠标垫
佩戴方式: 耳塞式
耳机类型: 有线
有无麦克风: 有
插头直径: 3.5mm
插头类型: 直插型
耳机输出音源: PC电脑
缆线长度: 1.2M
灵敏度: 100 dB
耳机阻抗: 16 Ohm
频响范围: 6 -23 500 Hz
耳机类别: 普通耳机 手机线控耳机 语音耳机 降噪耳机 监听耳机 运动耳机 游戏影音耳机 其他耳机品牌: Philips/飞利浦
型号: SHE8005

惠惠网比价(飞利浦SHE8005/10):http://www.huihui.cn/detail_75757b7de078a08e.html
下单地址
http://detail.tmall.com/item.htm?id=23218972827
付款:¥105

安装Android Studio

Google在 #IO13 上面发布了Android Studio,一款全新的Android开发IDE环境,撇开Eclipse+ADT。IO大会上面演示效果非常惊人,现在我来体验一下。

Getting Started with Android Studio

如果不出意外的话,跟随者安装程序一步一步下去就能够完成安装了。而我在安装过程中出现了找不到JDK的错误,打开安装程序,点击下一步,查找Java SE Development Kit的时候会直接程序崩溃,报一个"$(^name)"乱码的错误(我的计算机环境:Windows 7 Ultimate旗舰版SP1 x64位,JDK版本Java\jdk1.7.0_07\)。
经过Google之后StackOverflow的帖子帮助很大,看完我怀疑是我JDK版本的问题,所以我去下载了最新版本的JDK(1.7.0_21)。安装之后也不用修改环境变量,不用做任何修改安装成功。
出现下面截图。
找到JDK路径
安装过程:
安装完成之后会要求你选择配置文件,我又从来没用过这个IDE,所以I do not have
然后就看到了令人欣喜的一幕:
这里你可以选择新建Project,或者你可以按照官方的这篇教程将Eclipse下的工程转移到Android Studio下。
如果你还不知道过程,这里还有一段视频:


如果你在新建项目的时候发现下载”http://services.gradle.org/distributions/gradle-1.6-bin.zip“这里东西卡死,设置代理吧。

Android多线程(Thread、Runnable)

Android多线程(Thread、Runnable)以及Timer(Timer部分

认识Thread和Runnable

Java中实现多线程有两种途径:继承Thread类或者实现Runnable接口。Runnable是接口,建议用接口的方式生成线程,因为接口可以实现多继承,况且Runnable只有一个run方法,很适合继承。在使用Thread的时候只需继承Thread,并且new一个实例出来,调用 start()方法即可以启动一个线程。

Thread Test = new Thread();

Test.start();

在使用Runnable的时候需要先new一个实现Runnable的实例,之后启动Thread即可。

Test impelements Runnable;

Test t = new Test();

Thread test = new Thread(t);

test.start();

总结:Thread和Runnable是实现java多线程的2种方式,runable是接口,thread是类,建议使用runable实现 java多线程,不管如何,最终都需要通过thread.start()来使线程处于可运行状态。

认识Thread的start和run

1) start:
用start方法来启动线程,真正实现了多线程运行,这时无需等待run方法体代码执行完毕而直接继续执行下面的代码。通过调用Thread类的 start()方法来启动一个线程,这时此线程处于就绪(可运行)状态,并没有运行,一旦得到cpu时间片,就开始执行run()方法,这里方法 run()称为线程体,它包含了要执行的这个线程的内容,Run方法运行结束,此线程随即终止。

2) run:
run()方法只是类的一个普通方法而已,如果直接调用Run方法,程序中依然只有主线程这一个线程,其程序执行路径还是只有一条,还是要顺序执行,还是要等待run方法体执行完毕后才可继续执行下面的代码,这样就没有达到写线程的目的。

总结:调用start方法方可启动线程,而run方法只是thread的一个普通方法调用,还是在主线程里执行。

线程状态说明

线程状态从大的方面来说,可归结为:初始状态、可运行状态、不可运行状态和消亡状态,具体可细分为上图所示7个状态,说明如下:

1)线程的实现有两种方式,一是继承Thread类,二是实现Runnable接口,但不管怎样,当我们new了thread实例后,线程就进入了初始状态;

2) 当该对象调用了start()方法,就进入可运行状态;

3) 进入可运行状态后,当该对象被操作系统选中,获得CPU时间片就会进入运行状态;

4) 进入运行状态后case就比较多,大致有如下情形:

﹒run()方法或main()方法结束后,线程就进入终止状态;

﹒当线程调用了自身的sleep()方法或其他线程的join()方法,就会进入阻塞状态(该状态既停止当前线程,但并不释放所占有的资源)。当 sleep()结束或join()结束后,该线程进入可运行状态,继续等待OS分配时间片;

﹒当线程刚进入可运行状态(注意,还没运行),发现将要调用的资源被锁牢(synchroniza,lock),将会立即进入锁池状态,等待获取锁标记(这时的锁池里也许已经有了其他线程在等待获取锁标记,这时它们处于队列状态,既先到先得),一旦线程获得锁标记后,就转入可运行状态,等待OS分配 CPU时间片;

﹒当线程调用wait()方法后会进入等待队列(进入这个状态会释放所占有的所有资源,与阻塞状态不同),进入这个状态后,是不能自动唤醒的,必须依靠其他线程调用notify()或notifyAll()方法才能被唤醒(由于notify()只是唤醒一个线程,但我们由不能确定具体唤醒的是哪一个线程,也许我们需要唤醒的线程不能够被唤醒,因此在实际使用时,一般都用notifyAll()方法,唤醒有所线程),线程被唤醒后会进入锁池,等待获取锁标记。

﹒当线程调用stop方法,即可使线程进入消亡状态,但是由于stop方法是不安全的,不鼓励使用,大家可以通过run方法里的条件变通实现线程的 stop。

Timer部分见这里

Android联网时显示进度等待

Android中不知道什么时候加入了,联网不能再UI线程中进行的限制,之前调SDK=8的时候一点问题都没有,到了SDK=17就会报错误。Android做这样的限制肯定是好的,只是对于我这种新手就要纠结一点了。

这些天折腾Android联网的东西比较多,总结一些重要的东西,方便以后使。

将联网写在线程中,前台等待
public class Download extends Activity {
        private static final int MESSAGE_OK = 0x0001;
        private ProgressDialog progressDialog = null;

        @Override
        public void onCreate(Bundle savedInstanceState) {
                super.onCreate(savedInstanceState);
                this.setContentView(R.layout.main);        
                
                progressDialog = ProgressDialog.show(HelloXML.this, "下载", "正在下载,请稍候!");                                
                
                new Thread() {
                        public void run() {                        
                                try {
                                    //   连接网络获取数据
                                } catch (Exception e) {
                                        // 显示错误提示
                                        //Log.d("TAG",e.toString());
                                }
                                Message msg_listData = new Message();
                                msg_listData.what = MESSAGE_OK;
                                handler.sendMessage(msg_listData);
                        }
                }.start();
        }

        private Handler handler = new Handler() {     
                public void handleMessage(Message message) {
                        switch (message.what) {
                        case MESSAGE_OK:                                        
                        //刷新UI,显示数据,并关闭进度条                        
                                progressDialog.dismiss(); //关闭进度条
                                break;
                        }
                }
        };
}
Android中如果UI线程等待时间超过5秒钟,系统就会弹出菜单叫你强制关闭,所以一般情况下涉及到联网,就会涉及到线程。(以上参考

之前看过AsyncTask的一些资料,那个东西还是挺有用的,避免了Thread,Handle复杂的操作。

Quote Of The Day