Я просто хочу позвонить отправителю камеры для проекта. Я использую buildozer для конвертирования файла python kivy в «.apk». Но он не работает на телефоне Android.
Это файл сервера на P C
from threading import Thread
from time import sleep
import clss as cl
import socket
from time import sleep
import cv2
import io
import socket
import struct
import time
import pickle
import zlib
import sys
import numpy as np
UDP_IP = '192.168.1.100'
UDP_PORT = 6666 #20,21
sock = socket.socket(socket.AF_INET, # Internet
socket.SOCK_DGRAM) # UDPcmd
sock.bind((UDP_IP, UDP_PORT))
HOST=''
PORT=6666
s=socket.socket(socket.AF_INET,socket.SOCK_STREAM)
print('Socket created')
s.bind((HOST,PORT))
def threaded_function(arg):
while True:
try:
print('Socket bind complete')
s.listen()
print('Socket now listening')
conn,addr=s.accept()
data = b""
payload_size = struct.calcsize(">L")
print("payload_size: {}".format(payload_size))
while True:
while len(data) < payload_size:
print("Recv: {}".format(len(data)))
data += conn.recv(4096)
if len(data)==0:
break
print("Done Recv: {}".format(len(data)))
packed_msg_size = data[:payload_size]
data = data[payload_size:]
msg_size = struct.unpack(">L", packed_msg_size)[0]
print("msg_size: {}".format(msg_size))
while len(data) < msg_size:
data += conn.recv(4096)
frame_data = data[:msg_size]
data = data[msg_size:]
frame=pickle.loads(frame_data, fix_imports=True, encoding="bytes")
frame = cv2.imdecode(frame, cv2.IMREAD_COLOR)
cv2.imshow('ImageWindow',frame)
cv2.waitKey(1)
except:
print("Error")
def threaded_function2(arg):
while True:
print("your server two is working congrats")
data, addr = sock.recvfrom(1024) # Buffer size is 1024 bytes
print ("received message:", data,addr)
if __name__ == "__main__":
thread = Thread(target = threaded_function, args = (10, ))
thread2 = Thread(target = threaded_function2, args = (10, ))
thread.start()
thread2.start()
thread.join()
print("thread finished...exiting")
Отправитель .apk на Android
import clss as cl
import cv2
import pickle
import struct
import socket
from kivy.app import App
from kivy.uix.label import Label
from kivy.uix.boxlayout import BoxLayout
from kivy.uix.button import Button
from kivy.uix.textinput import TextInput
UDP_IP = "192.168.1.100"
UDP_PORT = 6666
anaDuzen = BoxLayout(orientation = "vertical") # Elemanların hepsini tutan ana pencere düzenimiz
ikinci_Duzen = BoxLayout(orientation = "vertical")
ilkSatir = BoxLayout()
ikinciSatir = BoxLayout()
ucuncuSatir = BoxLayout()
dorduncuSatir = BoxLayout()
ip_txt=TextInput()
textdeneme=TextInput()
take_port_number=TextInput()
label_for_ip=Label(text='IP Adresi:')
label_for_port=Label(text='Port Numarası:')
doldurLabel2=Label()
doldurLabel=Label()
ileri_Button=Button(text = "İleri")
geri_Button=Button(text = "Geri")
sag_button=Button(text = "Sag")
sol_button=Button(text = "Sol")
def kameraSender():
client_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
client_socket.connect(('192.168.1.100', 6666))
connection = client_socket.makefile('wb')
cam = cv2.VideoCapture(0)
cam.set(3, 320);
cam.set(4, 240);
img_counter = 0
encode_param = [int(cv2.IMWRITE_JPEG_QUALITY), 90]
while True:
ret, frame = cam.read()
result, frame = cv2.imencode('.jpg', frame, encode_param)
# data = zlib.compress(pickle.dumps(frame, 0))
data = pickle.dumps(frame, 0)
size = len(data)
client_socket.sendall(struct.pack(">L", size) + data)
img_counter += 1
cam.release()
def ileriGit(instance):
kameraSender()
def geriGit(instance):
pass
def sagaGit(instance):
#print("Hello")
MESSAGE="sag"
try:
sock = socket.socket(socket.AF_INET,socket.SOCK_DGRAM)
sock.sendto(str.encode(MESSAGE),(UDP_IP,UDP_PORT))
except:
pass
def solaGit(instance):
#print("Hello")
MESSAGE="sol"
try:
sock = socket.socket(socket.AF_INET,socket.SOCK_DGRAM)
sock.sendto(str.encode(MESSAGE),(UDP_IP,UDP_PORT))
except:
pass
ileri_Button.bind(on_press = ileriGit)
geri_Button.bind(on_press = geriGit)
sag_button.bind(on_press = sagaGit)
sol_button.bind(on_press = solaGit)
# Ens on denenen kod burada
#geri_Button.bind(on_press=onur)
class Program(App):
def build(self):
#İLK SATIR
ilkSatir.add_widget(label_for_ip)
ilkSatir.add_widget(ip_txt)
#İKİNCİ SATIR
ikinciSatir.add_widget(label_for_port)
ikinciSatir.add_widget(take_port_number)
ucuncuSatir.add_widget(doldurLabel)
ucuncuSatir.add_widget(ileri_Button)
ucuncuSatir.add_widget(doldurLabel2)
dorduncuSatir.add_widget(sol_button)
dorduncuSatir.add_widget(geri_Button)
dorduncuSatir.add_widget(sag_button)
anaDuzen.add_widget(ilkSatir)
anaDuzen.add_widget(ikinciSatir)
anaDuzen.add_widget(ucuncuSatir)
anaDuzen.add_widget(dorduncuSatir)
return anaDuzen
obj=Program()
obj.run()
Когда я пытаюсь открыть это приложение .apk, мой .apk просто закрывается на телефоне. Это не дает ошибку. Это просто закрытие. Эта проблема не о buildozer.spe c Я думаю. Потому что я даю разрешение с "android .permissinons = INTE RNET, КАМЕРА", как это. Нет синтаксической ошибки. Эти файлы работают на p c правильно. Нужно ли давать другое разрешение для разрешения Android камеры? Что мне не хватает Спасибо.