Java 加载时崩溃活动
我在下面的代码中有一个错误,此代码必须显示元素列表,但当它执行代码时,我在以下行中有一个错误:val bmp:Bitmap=BitmapFactory.decodeStream(url.openConnection().getInputStream())这只发生在这个视图中,我声明mylistaadapter对象也在其他视图中使用,这是因为什么 错误:Java 加载时崩溃活动,java,android,kotlin,Java,Android,Kotlin,我在下面的代码中有一个错误,此代码必须显示元素列表,但当它执行代码时,我在以下行中有一个错误:val bmp:Bitmap=BitmapFactory.decodeStream(url.openConnection().getInputStream())这只发生在这个视图中,我声明mylistaadapter对象也在其他视图中使用,这是因为什么 错误: at com.android.okhttp.internal.huc.HttpURLConnectionImpl.getResponse(Htt
at com.android.okhttp.internal.huc.HttpURLConnectionImpl.getResponse(HttpURLConnectionImpl.java:411)
at com.android.okhttp.internal.huc.HttpURLConnectionImpl.getInputStream(HttpURLConnectionImpl.java:248)
at com.android.okhttp.internal.huc.DelegatingHttpsURLConnection.getInputStream(DelegatingHttpsURLConnection.java:211)
at com.android.okhttp.internal.huc.HttpsURLConnectionImpl.getInputStream(HttpsURLConnectionImpl.java:30)
活动.kt
class VideoActivity : AppCompatActivity() {
private lateinit var db: FirebaseFirestore
private lateinit var fusedLocationClient: FusedLocationProviderClient
private lateinit var locationRequest: LocationRequest
private lateinit var locationCallback: LocationCallback
private var latitude: Double = 0.0
private var longitudine: Double = 0.0
private var idVeicolo: String = ""
private var codice_veicolo: String = ""
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_video)
window.setFlags(
WindowManager.LayoutParams.FLAG_FULLSCREEN,
WindowManager.LayoutParams.FLAG_FULLSCREEN
)
getLocationUpdates()
db = FirebaseFirestore.getInstance()
buttonvideoperizialive.visibility = View.INVISIBLE
buttonback.setOnClickListener { back() }
val preference = this.getSharedPreferences("PREFERENCE_NAME", 0)
val email: String = preference.getString("Email", "").toString()
val firebaseid: String = preference.getString("ID_AUTH_FIREBASE", "").toString()
val key: String = preference.getString("ADMIN_KEY", "").toString()
codice_veicolo = intent.getStringExtra("CODICE_VEICOLO").toString()
idVeicolo = intent.getStringExtra("ID_VEICOLO").toString()
enablevideo(codice_veicolo)
val recycler_view: ListView = findViewById(R.id.listView)
var list = mutableListOf<Model>()
val listavalori = APISupport.getListaVideo(firebaseid, email, key, idVeicolo)
var urlphoto = "https://i.ibb.co/k2mSK4K/icon-video-play.png"
listavalori.forEach {
list.add(
Model(
"Videoperizia del:" + it.DATA_ORA_CARICAMENTO,
"\nVideo geolocalizzato:\n" + it.INDIRIZZO_POSIZIONE_RILEVATA,
urlphoto,
"\nlat: " + it.LATITUDINE_POSIZIONE_RILEVATA + " - lon: " + it.LONGITUDINE_POSIONE_RILEVATA
)
)
}
recycler_view.adapter = MyListAdapter(this.baseContext, R.layout.rowvideo, list)
/*recycler_view.setOnItemClickListener { parent, view, position, id ->
//openvideourl(listavalori.get(position).URL_FILE)
}*/
buttonvideoperizia.setOnClickListener {
openVideoRecord()
}
}
fun openVideoRecord() {
val intent = Intent(this, VideoRecordStart::class.java)
intent.putExtra("CODICE_VEICOLO", codice_veicolo)
intent.putExtra("ID_VEICOLO", idVeicolo)
startActivity(intent)
/*val takeVideoIntent: Intent = Intent(MediaStore.ACTION_VIDEO_CAPTURE)
if (takeVideoIntent.resolveActivity(packageManager) != null) {
val CAMERA_REQUEST_CODE_VEDIO = 0
startActivityForResult(takeVideoIntent, CAMERA_REQUEST_CODE_VEDIO)
}*/
}
private fun getLocationUpdates() {
fusedLocationClient = LocationServices.getFusedLocationProviderClient(this)
locationRequest = LocationRequest()
locationRequest.interval = 50000
locationRequest.fastestInterval = 50000
locationRequest.smallestDisplacement = 170f //170 m = 0.1 mile
locationRequest.priority = LocationRequest.PRIORITY_HIGH_ACCURACY //according to your app
locationCallback = object : LocationCallback() {
override fun onLocationResult(locationResult: LocationResult?) {
locationResult ?: return
if (locationResult.locations.isNotEmpty()) {
val addresses: List<Address>?
val geoCoder = Geocoder(applicationContext, Locale.getDefault())
addresses = geoCoder.getFromLocation(
locationResult.lastLocation.latitude,
locationResult.lastLocation.longitude,
1
)
longitudine = locationResult.lastLocation.longitude
latitude = locationResult.lastLocation.latitude
if (addresses != null && addresses.isNotEmpty()) {
val address: String = addresses[0].getAddressLine(0)
val city: String = addresses[0].locality
val state: String = addresses[0].adminArea
val country: String = addresses[0].countryName
val postalCode: String = addresses[0].postalCode
val knownName: String = addresses[0].featureName
}
}
}
}
}
fun back() {
val intent = Intent(this, MainActivity::class.java)
val preference = this.getSharedPreferences("PREFERENCE_NAME", 0)
val email: String = preference.getString("Email", "").toString()
val firebaseid: String = preference.getString("ID_AUTH_FIREBASE", "").toString()
val key: String = preference.getString("ADMIN_KEY", "").toString()
intent.putExtra("Email", email)
intent.putExtra("ID_AUTH_FIREBASE", firebaseid)
intent.putExtra("ADMIN_KEY", key)
startActivity(intent)
}
private fun openvideourl(VideoURL: String) {
val intent = Intent(this, PlayVideoActivity::class.java)
intent.putExtra("VideoURL", VideoURL)
startActivity(intent)
finish()
}
private fun enablevideo(codiceveicolo: String) {
try {
val docRef = db.collection("T_VEICOLI").document(codiceveicolo)
docRef.addSnapshotListener { snapshot, e ->
if (e != null) {
return@addSnapshotListener
}
if (snapshot != null && snapshot.exists()) {
val LIVE: Boolean = snapshot.data?.get("Live") as Boolean
if (LIVE) {
Toast.makeText(
this,
"Operatore in linea, puoi accedere alla video chiamata!",
Toast.LENGTH_LONG
).show()
labelvideoperizia.visibility = View.INVISIBLE
buttonvideoperizialive.visibility = View.VISIBLE
} else {
labelvideoperizia.text =
"Potrai accedere alla video chiamata da qui quando l'operatore sarà online"
labelvideoperizia.visibility = View.VISIBLE
buttonvideoperizialive.visibility = View.INVISIBLE
}
try {
var EFFETTUATO: Boolean = snapshot.data?.get("EFFETTUATO") as Boolean
if (EFFETTUATO) {
labelvideoperizia.visibility = View.VISIBLE
buttonvideoperizialive.visibility = View.INVISIBLE
labelvideoperizia.text = "Visita già effettuata."
}
} catch (e: Exception) {
System.out.println("Errore live: " + e)
}
} else {
System.out.println("Snapshot non valido ")
}
}
} catch (e: Exception) {
System.out.println("Errore avvio live: " + e)
}
}
}
class MyListAdapter(var mCtx: Context, var resource: Int, var items: List<Model>) :
ArrayAdapter<Model>(mCtx, resource, items) {
override fun getView(position: Int, convertView: View?, parent: ViewGroup): View {
var person: Model = items[position]
val layoutInflater: LayoutInflater = LayoutInflater.from(mCtx)
val url: URL = URL(person.photo)
val bmp: Bitmap = BitmapFactory.decodeStream(url.openConnection().getInputStream())
val view: View = layoutInflater.inflate(resource, null)
val imageView: ImageView = view.findViewById(R.id.iconIv)
var textView: TextView = view.findViewById(R.id.titleTv)
var textView1: TextView = view.findViewById(R.id.descTv)
imageView.setImageBitmap(bmp)
textView.text = person.title + " | " + person.desc
textView1.text = "" + person.targa
return view
}
}
class-VideoActivity:AppCompatActivity(){
私有lateinit var db:FirebaseFirestore
私有lateinit变量fusedLocationClient:FusedLocationProviderClient
私有lateinit var locationRequest:locationRequest
私有lateinit变量locationCallback:locationCallback
专用变量纬度:双=0.0
私有变量longitudine:Double=0.0
私有变量idVeicolo:String=“”
私有变量codice_veiclo:String=“”
重写创建时的乐趣(savedInstanceState:Bundle?){
super.onCreate(savedInstanceState)
setContentView(R.layout.activity\u视频)
window.setFlags(
WindowManager.LayoutParams.FLAG_全屏显示,
WindowManager.LayoutParams.FLAG_全屏显示
)
getLocationUpdates()
db=FirebaseFirestore.getInstance()
buttonvideoperizialive.visibility=View.INVISIBLE
buttonback.setOnClickListener{back()}
val preference=this.getSharedReferences(“首选项名称”,0)
val email:String=preference.getString(“email”,“电子邮件”).toString()
val firebaseid:String=preference.getString(“ID\u AUTH\u FIREBASE”,”).toString()
val-key:String=preference.getString(“ADMIN_-key”,”).toString()
codice_veicolo=intent.getStringExtra(“codice_veicolo”).toString()
idVeicolo=intent.getStringExtra(“ID_VEICOLO”).toString()
启用视频(codice_Veiclo)
val recycler_视图:ListView=findViewById(R.id.ListView)
var list=mutableListOf()
val listavalori=APISupport.getListaVideo(firebaseid、电子邮件、密钥、IDVEICLO)
var urlphoto=”https://i.ibb.co/k2mSK4K/icon-video-play.png"
利斯塔瓦洛里·弗雷奇{
list.add(
模型(
Videoperizia del:+it.DATA_ORA_CARICAMENTO,
“\n视频地理定位:\n”+it.INDIRIZZO_POSIZIONE_RILEVATA,
照片,
“\nlat:“+it.LATITUDINE\u POSIZIONE\u RILEVATA+”-lon:“+it.LONGITUDINE\u POSIZIONE\u RILEVATA”
)
)
}
recycler_view.adapter=MyListAdapter(this.baseContext,R.layout.rowvideo,list)
/*recycler_view.setOnItemClickListener{父对象,视图,位置,id->
//openvideourl(listavalori.get(position.URL\u文件)
}*/
buttonvideoperizia.setOnClickListener{
openVideoRecord()
}
}
有趣的openVideoRecord(){
val intent=intent(这是VideoRecordStart::class.java)
意图。额外(“CODICE_VEICOLO”,CODICE_VEICOLO)
意图。额外(“ID_VEICOLO”,idVeicolo)
星触觉(意图)
/*val takeVideoIntent:Intent=Intent(MediaStore.ACTION\u VIDEO\u捕获)
if(takeVideoIntent.resolveActivity(packageManager)!=null){
val摄像机\请求\代码\视频=0
startActivityForResult(拍摄视频意图、摄像机\请求\代码\视频)
}*/
}
私人娱乐GetLocationUpdate(){
fusedLocationClient=LocationServices.getFusedLocationProviderClient(此)
locationRequest=locationRequest()
locationRequest.interval=50000
locationRequest.FastTestInterval=50000
位置请求。最小位移=170f//170M=0.1英里
locationRequest.priority=locationRequest.priority\u高精度//根据您的应用程序
locationCallback=对象:locationCallback(){
覆盖趣味onLocationResult(locationResult:locationResult?){
locationResult?:返回
if(locationResult.locations.isNotEmpty()){
val地址:列表?
val geoCoder=geoCoder(applicationContext,Locale.getDefault())
地址=geoCoder.getFromLocation(
locationResult.lastLocation.latitude,
locationResult.lastLocation.longitude,
1.
)
longitudine=locationResult.lastLocation.longitude
纬度=locationResult.lastLocation.latitude
if(addresses!=null&&addresses.isNotEmpty()){
val地址:字符串=地址[0]。getAddressLine(0)
val city:字符串=地址[0]。位置
val状态:字符串=地址[0]。adminArea
val国家:字符串=地址[0]。国家名称
val postalCode:字符串=地址[0]。postalCode
val knownName:String=地址[0]。功能名称
}
}
}
}
}
有趣的事{
val intent=intent(这是MainActivity::class.java)
val preference=this.getSharedReferences(“首选项名称”,0)
val email:String=preference.getString(“email”,“电子邮件”).toString()
val firebaseid:String=preference.getString(“ID\u AUTH\u FIREBASE”,”).toString()
val-key:String=preference.getString(“ADMIN_-key”,”).toString()
intent.putExtra(“电子邮件”,电子邮件)
intent.putExtra(“ID\u AUTH\u FIREBASE”,firebaseid)
intent.putExtra(“管理密钥”,密钥)
星触觉(意图)
}
私人娱乐openvideourl(VideoURL:String){
val intent=intent(这是PlayVideoActivity::class.java)
intent.putExtra(“VideoURL”,VideoURL)
星触觉(意图)
完成()
}
私人娱乐支持视频(codiceveicolo:String){
试一试{
val docRef=db.coll