C++是一种面向对象的计算机程序设计语言,由美国AT&T贝尔实验室的本贾尼·斯特劳斯特卢普博士在20世纪80年代初期发明并实现,最初它被称作“CwithClasses”(包含类的C语言)。[1]它是一种静态数据类型检查的、支持多重编程范式的通用程序设计语言,支持过程化程序设计、数据抽象、面向对象程序设计、泛型程序设计等多种程序设计风格.C++是C语言的继承,进一步扩充和完善了C语言,成为一种面向对象的程序设计语言。
在C基础上,一九八三年又由贝尔实验室的BjarneStrou-strup推出了C++。C++进一步扩充和完善了C语言,成为一种面向对象的程序设计语言。C++目前流行的编译器最新版本是BorlandC++4.5,SymantecC++6.1,和MicrosoftVisualC++2012。C++提出了一些更为深入的概念,它所支持的这些面向对象的概念容易将问题空间直接地映射到程序空间,为程序员提供了一种与传统结构程序设计不同的思维方式和编程方法。因而也增加了整个语言的复杂性,掌握起来有一定难度。C++由美国AT&T贝尔实验室的本贾尼·斯特劳斯特卢普博士在20世纪80年代初期发明并实现(最初这种语言被称作“CwithClasses”带类的C)。开始,C++是作为C语言的增强版出现的,从给C语言增加类开始,不断的增加新特性。虚函数(virtualfunction)、运算符重载(OperatorOverloading)、多重继承(MultipleInheritance)、模板(Template)、异常(Exception)、RTTI、命名空间(NameSpace)逐渐被加入标准。
android 中实现网页调用摄像头功能方法·如下:1/apk/res/android"
xmlns:tools="schemas/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
tools:context=".CameraWebviewActivity" >
<Button
android:id="@+id/bt"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Camera"
android:layout_alignParentTop="true"
/>
<WebView
android:id="@+id/wv"
android:layout_width="fill_parent"
android:layout_height="match_parent"
android:layout_below="@+id/bt"
/>
</RelativeLayout>
4.、编写activity:
public class CameraWebviewActivity extends Activity {
private final static String TAG = "CameraWebviewActivity"
private Button bt
private WebView wv
public String fileFullName//照相后的照片的全整路径
private boolean fromTakePhoto//是否是从摄像界面返回的webview
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_camera_webview)
initViews()
}
private void initViews() {
bt = (Button) findViewById(R.id.bt)
bt.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
System.out.println("----------------")
takePhoto( Math.random()*1000+1 + ".jpg")
}
})
wv = (WebView) findViewById(R.id.wv)
WebSettings setting = wv.getSettings()
setting.setJavaScriptEnabled(true)
wv.setWebViewClient(new WebViewClient(){
@Override
public void onPageStarted(WebView view, String url, Bitmap favicon) {
super.onPageStarted(view, url, favicon)
}
@Override
public boolean shouldOverrideUrlLoading(WebView view, String url) {
return super.shouldOverrideUrlLoading(view, url)
}
@Override
public void onPageFinished(WebView view, String url) {
super.onPageFinished(view, url)
}
})
wv.setWebChromeClient(new WebChromeClient(){
@Override//实现js中的alert弹窗在Activity中显示
public boolean onJsAlert(WebView view, String url, String message, JsResult result) {
Log.d(TAG, message)
result.confirm()
return true
}
})
wv.loadUrl("file:///android_asset/index.html")
final Handler mHandler = new Handler()
//webview增加javascript接口,监听html页面中的js点击事件
wv.addJavascriptInterface(new Object(){
public String clickOnAndroid() {//将被js调用
mHandler.post(new Runnable() {
public void run() {
fromTakePhoto = true
//调用 启用摄像头的自定义方法
takePhoto("testimg" + Math.random()*1000+1 + ".jpg")
System.out.println("========fileFullName: " + fileFullName)
}
})
return fileFullName
}
}, "demo")
}
/*
* 调用摄像头的方法
*/
public void takePhoto(String filename) {
System.out.println("----start to take photo2 ----")
Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE)
intent.putExtra(MediaStore.EXTRA_MEDIA_TITLE, "TakePhoto")
//判断是否有SD卡
String sdDir = null
boolean isSDcardExist = Environment.getExternalStorageState().equals(Environment.MEDIA_MOUNTED)
if(isSDcardExist) {
sdDir = Environment.getExternalStorageDirectory().getAbsolutePath()
} else {
sdDir = Environment.getRootDirectory().getAbsolutePath()
}
//确定相片保存路径
String targetDir = sdDir + "/" + "webview_camera"
File file = new File(targetDir)
if (!file.exists()) {
file.mkdirs()
}
fileFullName = targetDir + "/" + filename
System.out.println("----taking photo fileFullName: " + fileFullName)
//初始化并调用摄像头
intent.putExtra(MediaStore.Images.Media.MIME_TYPE, "image/jpeg")
intent.putExtra(MediaStore.EXTRA_OUTPUT, Uri.fromFile(new File(fileFullName)))
startActivityForResult(intent, 1)
}
/*
* (non-Javadoc)
* @see android.app.Activity#onActivityResult(int, int, android.content.Intent)
* 重写些方法,判断是否从摄像Activity返回的webview activity
*/
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
System.out.println("----requestCode: " + requestCode + "resultCode " + resultCode + "fileFullName: " + fileFullName)
if (fromTakePhoto &&requestCode ==1 &&resultCode ==-1) {
wv.loadUrl("javascript:wave2('" + fileFullName + "')")
} else {
wv.loadUrl("javascript:wave2('Please take your photo')")
}
fromTakePhoto = false
super.onActivityResult(requestCode, resultCode, data)
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menuthis adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.camera_webview, menu)
return true
}
}