📋 作者介绍:友友们好我是进击攻城狮,大二学生党一枚
💖作者主页:进击攻城狮的个人博客主页.进击攻城狮 🔥我和友友们一样喜欢编辑,天天敲代码,沉迷学习,日渐消瘦。很荣幸能向大家分享我的所学,和大家一起进步。如果文章有错误,欢迎在评论区指正。那么开始今天的学习吧!
🎉 支持我:点赞👍+收藏⭐️+留言📝


Android Studio第14课图片渐进度,播放视频,App打包

  • 一、百度地图
  • 1.导包,添加依赖
  • 2.在AndroidManifest.xml中获取权限配置
  • 3.key值获取
  • 4.新建一个DemoApplication类
  • 5.xml中配置
  • 6.代码展示
  • 7.运行效果
  • 二、获取相册和拍照
  • 1.导包添加依赖
  • 2.在AndroidManifest.xml中获取权限配置
  • 3.新建一个GlideEngine类
  • 4.运行代码
  • 5.效果展示
  • 总结



一、百度地图

1.导包,添加依赖

在build.gradle导包

android studio 获取图片资源id android studio读取本地图片_android studio

android studio 获取图片资源id android studio读取本地图片_百度_02

ndk {
            // 设置支持的SO库架构(开发者可以根据需要,选择一个或多个平台的so)
            abiFilters "armeabi", "armeabi-v7a", "arm64-v8a", "x86","x86_64"
        }
  implementation 'com.baidu.lbsyun:BaiduMapSDK_Map:7.4.0'
    implementation 'com.baidu.lbsyun:BaiduMapSDK_Search:7.4.0'
    implementation 'com.baidu.lbsyun:BaiduMapSDK_Util:7.4.0'
    implementation 'com.baidu.lbsyun:BaiduMapSDK_Location_All:9.1.8'

    implementation 'com.guolindev.permissionx:permissionx:1.6.4'

2.在AndroidManifest.xml中获取权限配置

<!-- 访问网络,进行地图相关业务数据请求,包括地图数据,路线规划,POI检索等 -->
    <uses-permission android:name="android.permission.INTERNET" />
    <!-- 获取网络状态,根据网络状态切换进行数据请求网络转换 -->
    <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />

    <!-- 读取外置存储。如果开发者使用了so动态加载功能并且把so文件放在了外置存储区域,则需要申请该权限,否则不需要 -->
    <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
    <!-- 写外置存储。如果开发者使用了离线地图,并且数据写在外置存储区域,则需要申请该权限 -->
    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />


    <!-- 这个权限用于进行网络定位 -->
    <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
    <!-- 这个权限用于访问GPS定位 -->
    <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
    <!--具备摄像头-->

还要加入以下两个配置

android studio 获取图片资源id android studio读取本地图片_百度_03

<meta-data
            android:name="com.baidu.lbsapi.API_KEY"
            android:value="SUbHVf89GM0GAxi0eubyrWExTxvz2GV1" />
            
        <service android:name="com.baidu.location.f"
            android:enabled="true"
            android:process=":remote"/>

android studio 获取图片资源id android studio读取本地图片_android_04


其中这个key值的来源及其重要,在百度地图开放平台 拿到这个key值

3.key值获取

进入百度地图开放平台后创建应用

android studio 获取图片资源id android studio读取本地图片_xml_05


应用类型选择这个Android SDK

android studio 获取图片资源id android studio读取本地图片_android studio_06

在控制命令台.android路径下:

keytool -list -v -keystore debug.keystore

密钥口令为android

得到我们需要的SHA1

android studio 获取图片资源id android studio读取本地图片_百度_07

android studio 获取图片资源id android studio读取本地图片_xml_08


将得到的SHA1和包名(AndroidManifest.xml里面)填上去,就可以得到key值了

android studio 获取图片资源id android studio读取本地图片_百度_09

4.新建一个DemoApplication类

package com.hnucm.baidumap;

import android.app.Application;

import com.baidu.mapapi.CoordType;
import com.baidu.mapapi.SDKInitializer;
import com.baidu.mapapi.utils.CoordinateConverter;


public class DemoApplication extends Application {
    @Override
    public void onCreate() {
        super.onCreate();
        //在使用SDK各组件之前初始化context信息,传入ApplicationContext
        SDKInitializer.initialize(this);
        //自4.3.0起,百度地图SDK所有接口均支持百度坐标和国测局坐标,用此方法设置您使用的坐标类型.
        //包括BD09LL和GCJ02两种坐标,默认是BD09LL坐标。
        SDKInitializer.setCoordType(CoordType.BD09LL);
    }
}

5.xml中配置

<com.baidu.mapapi.map.MapView
            android:id="@+id/bmapView"
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:clickable="true"
            tools:ignore="MissingClass" />

6.代码展示

package com.hnucm.baidumap;

import androidx.annotation.NonNull;
import androidx.appcompat.app.AppCompatActivity;

import android.Manifest;
import android.net.Uri;
import android.os.Bundle;
import android.view.View;
import android.widget.ImageView;
import android.widget.Toast;

import com.baidu.location.BDAbstractLocationListener;
import com.baidu.location.BDLocation;
import com.baidu.location.LocationClient;
import com.baidu.location.LocationClientOption;
import com.baidu.mapapi.map.BaiduMap;
import com.baidu.mapapi.map.MapStatus;
import com.baidu.mapapi.map.MapStatusUpdateFactory;
import com.baidu.mapapi.map.MapView;
import com.baidu.mapapi.map.MyLocationData;
import com.baidu.mapapi.model.LatLng;
import com.bumptech.glide.Glide;
import com.luck.picture.lib.basic.PictureSelector;
import com.luck.picture.lib.config.SelectMimeType;
import com.luck.picture.lib.entity.LocalMedia;
import com.luck.picture.lib.interfaces.OnResultCallbackListener;
import com.permissionx.guolindev.PermissionX;
import com.permissionx.guolindev.callback.RequestCallback;

import java.io.File;
import java.util.ArrayList;
import java.util.List;


public class MainActivity extends AppCompatActivity {
    MapView mapView;
    BaiduMap baiduMap;
    LocationClient locationClient;
    ImageView imageView;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        PermissionX.init(this)
                .permissions(Manifest.permission.ACCESS_COARSE_LOCATION, Manifest.permission.ACCESS_FINE_LOCATION)
                .request(new RequestCallback() {
                    @Override
                    public void onResult(boolean allGranted, @NonNull List<String> grantedList, @NonNull List<String> deniedList) {
                        if (allGranted) {
                            Toast.makeText(MainActivity.this, "All permissions are granted", Toast.LENGTH_LONG).show();
                        } else {
                            Toast.makeText(MainActivity.this, "These permissions are denied: $deniedList", Toast.LENGTH_LONG).show();
                        }
                    }
                });

        mapView = findViewById(R.id.bmapView);
        baiduMap = mapView.getMap();

        LatLng cenpt = new LatLng(28.199996, 112.982994);

        MapStatus.Builder builder = new MapStatus.Builder();
        builder.zoom(18)
                .target(cenpt);

        baiduMap.setMapStatus(MapStatusUpdateFactory.newMapStatus(builder.build()));
        baiduMap.setMyLocationEnabled(true);
        LocationClient LocationClient = new LocationClient(this);

//通过LocationClientOption设置LocationClient相关参数
        LocationClientOption option = new LocationClientOption();
        option.setOpenGps(true); // 打开gps
        option.setCoorType("bd09ll"); // 设置坐标类型
        option.setScanSpan(1000);

//设置locationClientOption
        LocationClient.setLocOption(option);

//注册LocationListener监听器
        MyLocationListener myLocationListener = new MyLocationListener();
        LocationClient.registerLocationListener(myLocationListener);
//开启地图定位图层
        LocationClient.start();

    }

    public class MyLocationListener extends BDAbstractLocationListener {
        @Override
        //location里面有经度和纬度,谷歌总部
        public void onReceiveLocation(BDLocation location) {
            //mapView 销毁后不在处理新接收的位置
            if (location == null || mapView == null) {
                return;
            }
            MyLocationData locData = new MyLocationData.Builder()
                    .accuracy(location.getRadius())
                    // 此处设置开发者获取到的方向信息,顺时针0-360
                    .direction(location.getDirection()).latitude(location.getLatitude())
                    .longitude(location.getLongitude()).build();
            baiduMap.setMyLocationData(locData);
            }
       }
  }

7.运行效果

android studio 获取图片资源id android studio读取本地图片_android studio_10

二、获取相册和拍照

1.导包添加依赖

在build.gradle导包

// PictureSelector basic (Necessary)
    implementation 'io.github.lucksiege:pictureselector:v3.0.9'
// image compress library (Not necessary)
    implementation 'io.github.lucksiege:compress:v3.0.9'
// uCrop library (Not necessary)
    implementation 'io.github.lucksiege:ucrop:v3.0.9'
// simple camerax library (Not necessary)
    implementation 'io.github.lucksiege:camerax:v3.0.9'
    implementation 'com.github.bumptech.glide:glide:4.13.0'
    annotationProcessor 'com.github.bumptech.glide:compiler:4.13.0'

2.在AndroidManifest.xml中获取权限配置

<queries package="${applicationId}">
        <intent>
            <action android:name="android.media.action.IMAGE_CAPTURE">

            </action>
        </intent>
        <intent>
            <action android:name="android.media.action.ACTION_VIDEO_CAPTURE">

            </action>
        </intent>
    </queries>
    
    android:requestLegacyExternalStorage="true"
    
 <uses-feature android:name="android.hardware.camera.any" />
    <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
    <uses-permission android:name="android.permission.FOREGROUND_SERVICE" />
    <uses-permission android:name="android.permission.RECORD_AUDIO" />
    <uses-permission android:name="android.permission.CAMERA" />
    <uses-permission android:name="android.permission.INTERNET" />
    <uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
    <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
    <uses-permission android:name="android.permission.MODIFY_AUDIO_SETTINGS" />
    <uses-permission android:name="android.permission.VIBRATE" />
    <uses-permission android:name="android.permission.READ_PHONE_STATE" />
    <uses-permission android:name="android.permission.BLUETOOTH" />
    <uses-permission android:name="android.permission.MANAGE_EXTERNAL_STORAGE" />

3.新建一个GlideEngine类

4.运行代码

package com.hnucm.baidumap;

import androidx.annotation.NonNull;
import androidx.appcompat.app.AppCompatActivity;

import android.Manifest;
import android.net.Uri;
import android.os.Bundle;
import android.view.View;
import android.widget.ImageView;
import android.widget.Toast;

import com.baidu.location.BDAbstractLocationListener;
import com.baidu.location.BDLocation;
import com.baidu.location.LocationClient;
import com.baidu.location.LocationClientOption;
import com.baidu.mapapi.map.BaiduMap;
import com.baidu.mapapi.map.MapStatus;
import com.baidu.mapapi.map.MapStatusUpdateFactory;
import com.baidu.mapapi.map.MapView;
import com.baidu.mapapi.map.MyLocationData;
import com.baidu.mapapi.model.LatLng;
import com.bumptech.glide.Glide;
import com.luck.picture.lib.basic.PictureSelector;
import com.luck.picture.lib.config.SelectMimeType;
import com.luck.picture.lib.entity.LocalMedia;
import com.luck.picture.lib.interfaces.OnResultCallbackListener;
import com.permissionx.guolindev.PermissionX;
import com.permissionx.guolindev.callback.RequestCallback;

import java.io.File;
import java.util.ArrayList;
import java.util.List;


public class MainActivity extends AppCompatActivity {
    MapView mapView;
    BaiduMap baiduMap;
    LocationClient locationClient;
    ImageView imageView;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
         PermissionX.init(this)
                .permissions(Manifest.permission.ACCESS_COARSE_LOCATION,Manifest.permission.ACCESS_FINE_LOCATION)
                .request(new RequestCallback() {
                    @Override
                    public void onResult(boolean allGranted, @NonNull List<String> grantedList, @NonNull List<String> deniedList) {
                        if (allGranted) {
                            Toast.makeText(MainActivity.this, "All permissions are granted", Toast.LENGTH_LONG).show();
                        } else {
                            Toast.makeText(MainActivity.this, "These permissions are denied: $deniedList", Toast.LENGTH_LONG).show();
                        }
                    }
                });
        findViewById(R.id.button).setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                //获取相册

                PictureSelector.create(MainActivity.this)
                        .openGallery(SelectMimeType.ofImage())
                        .setImageEngine(com.hnucm.baidumap.GlideEngine.createGlideEngine())
                        .forResult(new OnResultCallbackListener<LocalMedia>() {
                            @Override
                            public void onResult(ArrayList<LocalMedia> result) {

                            }

                            @Override
                            public void onCancel() {

                            }
                        });

                PictureSelector.create(MainActivity.this)
                        .openGallery(SelectMimeType.ofImage())
                        .setImageEngine(GlideEngine.createGlideEngine())
                        .forResult(new OnResultCallbackListener<LocalMedia>() {
                            @Override
                            public void onResult(ArrayList<LocalMedia> result) {
                                Glide.with(MainActivity.this).load(Uri.fromFile(new File(result.get(0).getRealPath()))).into(imageView);
                            }

                            @Override
                            public void onCancel() {

                            }
                        });

            }
        });
        findViewById(R.id.button2).setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                //点击拍照

                PictureSelector.create(MainActivity.this)
                        .openCamera(SelectMimeType.ofImage())
                        .forResult(new OnResultCallbackListener<LocalMedia>() {
                            @Override
                            public void onResult(ArrayList<LocalMedia> result) {
                             imageView=   findViewById(R.id.imageView);
                                Glide.with(MainActivity.this).load(Uri.fromFile(new File(result.get(0).getRealPath()))).into(imageView);
                            }

                            @Override
                            public void onCancel() {

                            }
                        });

          //  点击拍照
                PictureSelector.create(MainActivity.this)
                        .openCamera(SelectMimeType.ofImage())
                        .forResult(new OnResultCallbackListener<LocalMedia>() {
                            @Override
                            public void onResult(ArrayList<LocalMedia> result) {
                                Glide.with(MainActivity.this).load(Uri.fromFile(new File(result.get(0).getRealPath()))).into(imageView);
                            }

                            @Override
                            public void onCancel() {

                            }
                        });

            }
        });

    }
}

5.效果展示

android studio 获取图片资源id android studio读取本地图片_android_11


按住shift可以移动相机,还可以从相册得到拍摄的图片

总结

好了,那么今天的学习就到这里了。友友们觉得不错的可以给个关注,点赞或者收藏哦!感谢各位友友们的支持。以下的代码希望各位大佬们自行检验哦,毕竟亲手操作让记忆更加深刻。