当前位置:  编程技术>移动开发
本页文章导读:
    ▪Intent与<intent-filter&gt        Intent与<intent-filter>耐心看完,你就能搞明白怎么Intent一个系统程序了。 @Intent结构 private String mAction; private Uri mData; private String mType; private String mPackage; private ComponentName mComponent; private int m.........
    ▪ github简略使用教程        github简单使用教程 github是一个基于git的代码托管平台,付费用户可以建私人仓库,我们一般的免费用户只能使用公共仓库,也就是代码要公开。对于一般人来说公共仓库就已经足够了,而且.........
    ▪ 初用wxWidgets 2.9.4(手机播放器连载系列一)       初用wxWidgets 2.9.4(手机播放器连载系列1)1、下载源代码:http://www.wxwidgets.org/,下载目前最新的版本  wxWidgets 2.9.4 Released 2012-07-09 HTML: ZIP or tar.bz2===============任意一个版本   2、使用nmake编译 .........

[1]Intent与<intent-filter&gt
    来源: 互联网  发布时间: 2014-02-18
Intent与<intent-filter>

耐心看完,你就能搞明白怎么Intent一个系统程序了。

@Intent结构

private String mAction;

private Uri mData;

private String mType;

private String mPackage;

private ComponentName mComponent;

private int mFlags;

private HashSet<String> mCategories;

private Bundle mExtras;

private Rect mSourceBounds;

@<intent-filter>元素与属性

intent-filter中有三个元素:action、category、data,这三个元素都是可以有多个的。

action和category元素只有android:name一条属性,而data则有scheme,host,prot,path,pathPrefix,pathPattem,mimeType七条属性。

@Intent中变量与intent-filter中元素对应关系

action与Intent中的mAction元素相对应;

category与Intent中的mCategories相对应;

data中的mimeType与Intent中的mType相对应;

data中的其余六条则与Intent中的mData相对应。

由此可见,Intent中与intent-filter相关的只有四个参数,mAction、mData、mType、mCategories,而这四个参数对应的操作如下:

Intent.setAction(String action);

Intent.addCategory(String category);

Intent.removeCategory(String category);

Intent.setType(String type);

Intent.setData(Uri data);

Intent.setDataAndType(Uri data, String type);

需要注意的是:setType会清空mData,而setData也会清空mType,如果要同时设置mType和mData则必须用setDataAndType。

这里的Uri=scheme://host:port/path。

如果没定义path、port、host则Uri=scheme://。

这里重点说一下path、pathPrefix和pathPattem:

path 用来匹配完整路径

pathPrefix 用来匹配路径的开头部分

pathPattem 用表达式来配置完整路径,"*"表示0个或多个其前面的字符,"."表示1个任意字符,".*"则可以表示0个或多个任意字符。

@Intent与intent-filter匹配规则

a、Intent定义的Action必须包含在<intent-filter>的Action列表总,若隐式Intent没有定义Action则系统会报错。

b、Intent若定义了Category(可多个),则所有Category必须包含在<intent-filter>的Category列表里,若Intent未定义Category则<intent-filter>中是否定义了Category都不受影响,<intent-filter>中必须包含<category android:name="android.intent.category.DEFAULT">才能通过startActivity启动,Service和Broadcast Receiver则不需要。

c、Intent若未定义Type,则其仅匹配同样没有定义Type的intent-filter,若定义了则必须在intent-filter中有相匹配的项。

d、Intent若未定义Uri,则其仅匹配同样没有定义uri的intent-filter,若定义了则必须在intent-filter中有相匹配的项。

@显式与隐式Intent

显式Intent通常用于程序内部间的组件通信,已经明确的定义了目标组件的信息,所以不需要系统决策用哪个目标组件,如:

Intent intent = new Intent(Context packageContext, Class<?> clas);

startActivity(intent);

隐式Intent不指明目标组件的class,只定义希望的Action、Category和Data,由系统决定使用哪个目标组件。这也是Android系统的一大亮点。

第三种,可以用PackageManager获取系统中安装的所有包,然后打开:

PackageManager packageManager = getBaseContext().getPackageManager();

Intent intent = new Intent(Intent.ACTION_MAIN, null);

intent.addCategory(Intent.CATEGORY_LAUNCHER);

resolveInfoList = packageManager.queryIntentActivities(intent, 0);//根据intent来搜索

Intent intent = new Intent();

intent.setComponent(new ComponentName(String pkg, String cls));

startActivity(intent);

@前面忘了说了,还要下载一份android源代码,然后在packages/apps目录下找到你要调用的程序,查看他的Manifest.xml。

 

 


    
[2] github简略使用教程
    来源: 互联网  发布时间: 2014-02-18
github简单使用教程

github是一个基于git的代码托管平台,付费用户可以建私人仓库,我们一般的免费用户只能使用公共仓库,也就是代码要公开。对于一般人来说公共仓库就已经足够了,而且我们也没多少代码来管理,O(∩_∩)O~。下面是我总结的一些简单使用方法,供初学者参考。

1.注册账户以及创建仓库

要想使用github第一步当然是注册github账号了。之后就可以创建仓库了(免费用户只能建公共仓库),Create a New Repository,填好名称后Create,之后会出现一些仓库的配置信息,这也是一个git的简单教程。

2.安装客户端msysgit

github是服务端,要想在自己电脑上使用git我们还需要一个git客户端,我这里选用msysgit,这个只是提供了git的核心功能,而且是基于命令行的。如果想要图形界面的话只要在msysgit的基础上安装TortoiseGit即可。

装完msysgit后右键鼠标会多出一些选项来,在本地仓库里右键选择Git Init Here,会多出来一个.git文件夹,这就表示本地git创建成功。右键Git Bash进入git命令行,为了把本地的仓库传到github,还需要配置ssh key。

3.配置Git

首先在本地创建ssh key;

1
$ ssh-keygen -t rsa -C "your_email@youremail.com"

后面的your_email@youremail.com改为你的邮箱,之后会要求确认路径和输入密码,我们这使用默认的一路回车就行。成功的话会在~/下生成.ssh文件夹,进去,打开id_rsa.pub,复制里面的key。

回到github,进入Account Settings,左边选择SSH Keys,Add SSH Key,title随便填,粘贴key。为了验证是否成功,在git bash下输入:

1
$ ssh -T git@github.com

如果是第一次的会提示是否continue,输入yes就会看到:You’ve successfully authenticated, but GitHub does not provide shell access 。这就表示已成功连上github。

接下来我们要做的就是把本地仓库传到github上去,在此之前还需要设置username和email,因为github每次commit都会记录他们。

1
2
$ git config --global user.name "your name"
$ git config --global user.email "your_email@youremail.com"

进入要上传的仓库,右键git bash,添加远程地址:

1
$ git remote add origin git@github.com:yourName/yourRepo.git

后面的yourName和yourRepo表示你再github的用户名和刚才新建的仓库,加完之后进入.git,打开config,这里会多出一个remote “origin”内容,这就是刚才添加的远程地址,也可以直接修改config来配置远程地址。

4.提交、上传

接下来在本地仓库里添加一些文件,比如README,

1
2
$ git add README
$ git commit -m "first commit"

上传到github:

1
$ git push origin master

git push命令会将本地仓库推送到远程服务器。
git pull命令则相反。

修改完代码后,使用git status可以查看文件的差别,使用git add 添加要commit的文件,也可以用git add -i来智能添加文件。之后git commit提交本次修改,git push上传到github。

5.gitignore文件

.gitignore顾名思义就是告诉git需要忽略的文件,这是一个很重要并且很实用的文件。一般我们写完代码后会执行编译、调试等操作,这期间会产生很多中间文件和可执行文件,这些都不是代码文件,是不需要git来管理的。我们在git status的时候会看到很多这样的文件,如果用git add -A来添加的话会把他们都加进去,而手动一个个添加的话也太麻烦了。这时我们就需要.gitignore了。比如一般c#的项目我的.gitignore是这样写的:

1
2
3
bin
*.suo
obj

bin和obj是编译目录,里面都不是源代码,忽略;suo文件是vs2010的配置文件,不需要。这样你在git status的时候就只会看到源代码文件了,就可以放心的git add -A了。

6.tag

我们可以创建一个tag来指向软件开发中的一个关键时期,比如版本号更新的时候可以建一个“v2.0”、“v3.1”之类的标签,这样在以后回顾的时候会比较方便。tag的使用很简单,主要操作有:查看tag、创建tag、验证tag以及共享tag。

6.1查看tag

列出所有tag:

1
git tag

这样列出的tag是按字母排序的,和创建时间没关系。如果只是想查看某些tag的话,可以加限定:

1
git tag -l v1.*

这样就只会列出1.几的版本。

6.2创建tag

创建轻量级tag:

1
git tag v1.0

这样创建的tag没有附带其他信息,与之相应的是带信息的tag:

1
git tag -a v1.0 -m 'first version'

-m后面带的就是注释信息,这样在日后查看的时候会很有用,这种是普通tag,还有一种有签名的tag:

1
git tag -s v1.0 -m 'first version'

前提是你有GPG私钥,把上面的a换成s就行了。除了可以为当前的进度添加tag,我们还可以为以前的commit添加tag:

1
2
3
4
5
#首先查看以前的commit
git log --oneline
#假如有这样一个commit:8a5cbc2 updated readme
#这样为他添加tag
git tag -a v1.1 8a5cbc2
6.3删除tag

很简单,知道tag名称后:

1
git tag -d v1.0
6.4验证tag

如果你有GPG私钥的话就可以验证tag:

1
git tag -v v1.0
6.5共享tag

我们在执行git push的时候,tag是不会上传到服务器的,比如现在的github,创建tag后git push,在github网页上是看不到tag的,为了共享这些tag,你必须这样:

1
git push origin --tags


作者:wuyuan
本文来自Wuyuan's Blog 转载请注明,谢谢!
文章地址: http://wuyuans.com/2012/05/github-simple-tutorial/

    
[3] 初用wxWidgets 2.9.4(手机播放器连载系列一)
    来源: 互联网  发布时间: 2014-02-18
初用wxWidgets 2.9.4(手机播放器连载系列1)

1、下载源代码:http://www.wxwidgets.org/,下载目前最新的版本

 wxWidgets 2.9.4 Released
2012-07-09
HTML: ZIP or tar.bz2===============任意一个版本

 

2、使用nmake编译

先修改,因为我想要unicode debug版本,修改wxWidgets-2.9.4\build\msw\config.vc

# What type of library to build? [0,1]=============生成类型库,0为静态库,1为动态库

SHARED = 0

# Compile Unicode build of wxWidgets? [0,1]=======是否使用UNICODE,0否,1是

UNICODE = 1

# Type of compiled binaries [debug,release]=========是debug还是release

BUILD = debug

也可以在编译的时候加上:

nmake -f makefile.vc SHARED=1 UNICODE=1 BUILD=release

启动nmake进入目录E:\wxWidgets-2.9.4\build\msw

nmake -f makefile.vc

得到编译后的lib,来个测试项目

先来配置一下工程:

a.工程---------------配置属性------------------C/C++-----------------常规----------------附加包含目录--------------------------E:\wxWidgets-2.9.4\include;E:\wxWidgets-2.9.4\include\msvc;

b.工程---配置属性----链接器-----附加库目录--------------------E:\wxWidgets-2.9.4\lib\vc_lib

c.工程---配置属性----链接器-----输入-----------加入以下:

wxmsw29ud_core.lib

wxbase29ud.lib

wxtiffd.lib

wxjpegd.lib

wxpngd.lib

wxzlibd.lib

wxregexud.lib

wxexpatd.lib

winmm.lib

comctl32.lib

rpcrt4.lib

wsock32.lib

odbc32.lib

 

3、

引用这位大哥的一个demo(带有main的,多幸福!)

http://www.cnblogs.com/godspeedsam/archive/2010/12/24/1915858.html

useWxWidgets.cpp:(控制台的)

// useWxWidgets.cpp : 定义控制台应用程序的入口点。
//

#include "stdafx.h"
#include <wx/wx.h> 
#include "client.h" 

int main(int argc,char* argv[]) 
{ 
	MyApp* app=new MyApp(); 
	wxApp::SetInstance(app); 


	return wxEntry(argc,argv); 
} 

 


 

client.h:

#include <wx/wx.h> 

class MyFrame : public wxFrame 
{ 
public: 
	MyFrame() ; 
}; 

class MyApp: public wxApp 
{ 
	wxFrame* m_frame; 
public: 

	bool OnInit(); 
}; 


 

client.cpp:

#include "stdafx.h"
#include <wx/wx.h> 
#include "client.h"

MyFrame:: MyFrame()  
	: wxFrame(NULL, wxID_ANY, wxT("Hello wxWidgets"), wxPoint(50,50), wxSize(800,600))  
{           
	wxPanel* mainPane = new wxPanel(this);           
	wxBoxSizer* sizer = new wxBoxSizer(wxHORIZONTAL);          
	// add widgets here!  
	mainPane->SetSizer(sizer);  
}  

bool MyApp::OnInit()  
{          
	m_frame = new MyFrame();          
	m_frame->Show();          
	return true; 
} 


 

WinMain的:

#include "stdafx.h"
#include <wx/wx.h> 
#include "client.h"
#include "windows.h"

int APIENTRY _tWinMain(_In_ HINSTANCE hInstance,
					   _In_opt_ HINSTANCE hPrevInstance,
					   _In_ LPTSTR    lpCmdLine,
					   _In_ int       nCmdShow)
{
	MyApp* app=new MyApp(); 
	wxApp::SetInstance(app); 

 
	return wxEntry(hInstance,hPrevInstance); 
}


    
最新技术文章:
▪Android开发之登录验证实例教程
▪Android开发之注册登录方法示例
▪Android获取手机SIM卡运营商信息的方法
▪Android实现将已发送的短信写入短信数据库的...
▪Android发送短信功能代码
▪Android根据电话号码获得联系人头像实例代码
▪Android中GPS定位的用法实例
▪Android实现退出时关闭所有Activity的方法
▪Android实现文件的分割和组装
▪Android录音应用实例教程
▪Android双击返回键退出程序的实现方法
▪Android实现侦听电池状态显示、电量及充电动...
▪Android获取当前已连接的wifi信号强度的方法
▪Android实现动态显示或隐藏密码输入框的内容
▪根据USER-AGENT判断手机类型并跳转到相应的app...
▪Android Touch事件分发过程详解
▪Android中实现为TextView添加多个可点击的文本
▪Android程序设计之AIDL实例详解
▪Android显式启动与隐式启动Activity的区别介绍
▪Android按钮单击事件的四种常用写法总结
▪Android消息处理机制Looper和Handler详解
▪Android实现Back功能代码片段总结
▪Android实用的代码片段 常用代码总结
▪Android实现弹出键盘的方法
▪Android中通过view方式获取当前Activity的屏幕截...
▪Android提高之自定义Menu(TabMenu)实现方法
▪Android提高之多方向抽屉实现方法
▪Android提高之MediaPlayer播放网络音频的实现方法...
▪Android提高之MediaPlayer播放网络视频的实现方法...
▪Android中GPS定位的用法实例 iis7站长之家
 


站内导航:


特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

©2012-2021,,E-mail:www_#163.com(请将#改为@)

浙ICP备11055608号-3