Android调用照相机和百度地图开发,百度地图显示界面覆盖了相机界面,求大神解答?
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Android调用照相机和百度地图开发,百度地图显示界面覆盖了相机界面,求大神解答?相关的知识,希望对你有一定的参考价值。
android界面如下,当我点击“镜头”按钮时,百度地图的界面遮挡了一部分相机预览界面;当我返回“地图“界面时,百度地图上像截图似的显示还是上一次的图片,求大神帮忙解答!!
android手机有自带的照相机和图库,我们做的项目中有时用到上传图片到服务器,今天做了一个项目用到这个功能,所以把我的代码记录下来和大家分享,有需求的朋友可以参考下android手机有自带的照相机和图库,我们做的项目中有时用到上传图片到服务器,今天做了一个项目用到这个功能,所以把我的代码记录下来和大家分享,第一次写博客希望各位大神多多批评。
首先上一段调用android相册和相机的代码:
复制代码
代码如下:
Intent intent = new
Intent(MediaStore.ACTION_IMAGE_CAPTURE);//调用android自带的照相机
photoUri =
MediaStore.Images.Media.EXTERNAL_CONTENT_URI;
startActivityForResult(intent,
1);
复制代码
代码如下:
Intent i = new Intent(Intent.ACTION_PICK,
android.provider.MediaStore.Images.Media.EXTERNAL_CONTENT_URI);//调用android的图库
startActivityForResult(i, 2);
复制代码
代码如下:
@Override
protected void
onActivityResult(int requestCode, int resultCode, Intent data)
//完成照相后回调用此方法
super.onActivityResult(requestCode, resultCode, data);
case 1:
switch (resultCode)
case Activity.RESULT_OK://照相完成点击确定
String sdStatus = Environment.getExternalStorageState();
if
(!sdStatus.equals(Environment.MEDIA_MOUNTED)) // 检测sd是否可用
Log.v("TestFile", "SD card is not avaiable/writeable right now.");
return;
Bundle bundle = data.getExtras();
Bitmap bitmap = (Bitmap)
bundle.get("data");// 获取相机返回的数据,并转换为Bitmap图片格式
FileOutputStream b = null;
File file = new File("/sdcard/pk4fun/");
file.mkdirs();//
创建文件夹,名称为pk4fun //
照片的命名,目标文件夹下,以当前时间数字串为名称,即可确保每张照片名称不相同。网上流传的其他Demo这里的照片名称都写死了,则会发生无论拍照多少张,后一张总会把前一张照片覆盖。细心的同学还可以设置这个字符串,比如加上“IMG”字样等;然后就会发现sd卡中myimage这个文件夹下,会保存刚刚调用相机拍出来的照片,照片名称不会重复。
String str = null;
Date date = null;
SimpleDateFormat format = new
SimpleDateFormat("yyyyMMddHHmmss");// 获取当前时间,进一步转化为字符串
date = new
Date(resultCode);
str = format.format(date);
String fileName =
"/sdcard/myImage/" + str + ".jpg";
sendBroadcast(fileName);
try
b
= new FileOutputStream(fileName);
bitmap.compress(Bitmap.CompressFormat.JPEG, 100, b);// 把数据写入文件
catch
(FileNotFoundException e)
e.printStackTrace();
finally
try
b.flush();
b.close();
catch (IOException e)
e.printStackTrace();
break;
case Activity.RESULT_CANCELED://
取消
break;
break;
case 2:
switch (resultCode)
case
Activity.RESULT_OK:
Uri uri = data.getData();
Cursor cursor =
mActivity.getContentResolver().query(uri, null,
null, null, null);
cursor.moveToFirst();
String imgNo = cursor.getString(0); // 图片编号
String imgPath = cursor.getString(1); // 图片文件路径
String imgSize =
cursor.getString(2); // 图片大小
String imgName = cursor.getString(3); // 图片文件名
cursor.close();
// Options options = new BitmapFactory.Options();
//
options.inJustDecodeBounds = false;
// options.inSampleSize = 10;
//
Bitmap bitmap = BitmapFactory.decodeFile(imgPath, options);
break;
case Activity.RESULT_CANCELED:// 取消
break;
break;
追问
这又是从哪里粘贴过来的……
参考技术A 那当然是腾讯地图了 腾讯地图有离线地图功能 能在你断网之后正常使用 只要你在有网的时候下载离线地图就可以了 还有3d功能 而且3d功能还有辨别方向的功能它 就是有指针的,就可以很清楚的分清东西南北的,而且也是可以帮你定位的,很方便灵活,这样你就可以知道自己的具体位置了,即使在陌生的城市也不会迷路,而且也可以帮你查询到很多的路线,还有可以乘坐到达的交通方式等等,都是可以高清实景的显示给你的,你可以试试看吧,希望能帮到你吧,望采纳啊
Android百度地图开发-第一篇:申请搭建百度地图
一、前言
这是第一篇关于Android使用百度地图的学习记录,主要记录:
1.在百度地图开发者平台上申请API Key。
2.在自己的应用中加入百度地图的Android版SDK。
3.在自己的应用中显示一个地图。
二、在百度地图开发者平台上申请API Key
百度地图开发者平台地址:http://lbsyun.baidu.com/index.php?title=%E9%A6%96%E9%A1%B5。点击界面的“申请密钥”,进入界面之后,点击“创建应用”按钮。
将应用类型选择为“Android SDK”,要填写应用名称、发布版本SHA1、开发版本SHA1,所以我建议现在就创建好你的应用项目,也好查看所需要填写的信息。在这里我的应用名称为“百度地图测试”,包名为"com.zhangmiao.baidumaptest11_4"。
发布、开发版本的SHA1的查看方式:
1.获取开发版SHA1:
输入命令:keytool -list -v -keystore debug.keystore,回车
输入密钥库口令:android(系统默认)回车。
这就看到了开发版SHA1了。
2.获取发布版SHA1:
2.1.创建自己的签名文件
在Android Studio软件中选择Build->Generate Signed APK。点击Next按钮
这里可以选择Create New Key Store或者Choose Existing Key Store,选择存在的KeyStore文件也是可以的,直接选择即可,这里,我介绍一下创建新的KeyStore的步骤,点击Create new Key Store按钮,
Key store path:选择KeyStore的文件路径与名称。
Password:密码
Confirms:再次输入密码
Alias:别名
Password:key的密码
Confirms:再次输入密码
Validity(years):密钥的有效期
First and Last Name:你的名字
Organizational Unit:单位
Organization:组织
City or Locality:城市或者所在地
State or Province:省份
Country Code (XX):国家
填写完成之后点击"ok"按钮,返回到了Generate Signed APK的界面,这个时候发现界面的Key store password、Key alias、Key Password已经自动填写好了,
点击"Next"按钮,出现了Enter Master Password界面(有的可能不会出现这个界面),
填写密码即可,点击“OK”按钮,
Build Type的选项是release,还要记得勾选Signature Versions的选项。点击Finish按钮,到这里开发版本的keystore文件就创建好了。
2.2.查看发布版的SHA1
输入命令:keytool -list -v -keystore “创建的发布版的keystore文件的地址”,回车。
输入密钥库口令:前面设置的是什么,这里填写什么。
这就看到了发布版SHA1了。
将查看到的发布版与开发版的SHA1填写进对应的输入框中。然后点击提交即可。
三、在自己的应用中加入百度地图的Android版SDK
先下载百度地图Android版的SDK:下载地址:http://lbsyun.baidu.com/index.php?title=androidsdk/sdkandev-download,点击自定义下载,勾选自己需要的功能,点击开发包下载即可。
下载完成之后,解压压缩包,将libs里面的文件全部放入自己项目的libs文件夹下。在项目的build.gradle中加入以下语句:
android {
...
sourceSets {
main {
jniLibs.srcDirs = [\'libs\']
}
}
}
这样就在你的项目中引入了百度地图的API了。
四、在自己的应用中显示一个地图
1.修改activity_main布局
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent"> <com.baidu.mapapi.map.MapView android:id="@+id/map_view" android:layout_width="match_parent" android:layout_height="match_parent" android:clickable="true" /> </LinearLayout>
2.添加API_KEY
在AndroidManifest.xml文件中,为Application添加api_key
<application ...> <meta-data android:name="com.baidu.lbsapi.API_KEY" android:value="在百度地图开发者平台界面查看自己应用的(访问应用)AK"/>
3.修改MainActivity文件
public class MainActivity extends AppCompatActivity { private MapView mMapView = null; private BaiduMap bdMap; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); requestWindowFeature(Window.FEATURE_NO_TITLE); SDKInitializer.initialize(getApplicationContext()); setContentView(R.layout.activity_main); mMapView = (MapView) findViewById(R.id.map_view); } @Override protected void onResume() { super.onResume(); mMapView.onResume(); } @Override protected void onPause() { super.onPause(); mMapView.onPause(); } @Override protected void onDestroy() { super.onDestroy(); mMapView.onDestroy(); MapView.setMapCustomEnable(false); mMapView = null; } }
4.添加权限
在AndroidManifest.xml中添加以下权限:
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" /> <uses-permission android:name="android.permission.INTERNET" /> <uses-permission android:name="android.permission.ACCESS_WIFI_STATE" /> <uses-permission android:name="android.permission.CHANGE_WIFI_STATE" /> <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /> <uses-permission android:name="android.permission.WRITE_SETTINGS" /> <uses-permission android:name="android.permission.READ_PHONE_STATE" /> <uses-permission android:name="android.permission.CALL_PHONE" /> <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" /> <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
现在就可以运行程序了,可以看到出现地图了。
代码地址: https://github.com/ZhangMiao147/BookCode_TheFirstLineOfCode/tree/master/baidumaptest11_4
以上是关于Android调用照相机和百度地图开发,百度地图显示界面覆盖了相机界面,求大神解答?的主要内容,如果未能解决你的问题,请参考以下文章