初步实现舵机转动

chenghonghao_branch
MikkoAyaka 1 year ago
parent 746392a6f6
commit 08c773250c

@ -52,6 +52,7 @@ android {
}
dependencies {
implementation 'io.github.litao0621:nifty-slider:1.4.6'
implementation fileTree(dir: 'libs', include: ['*.jar'])
implementation 'androidx.appcompat:appcompat:1.6.1'
implementation 'com.google.android.material:material:1.8.0'

@ -7,12 +7,9 @@
<uses-permission android:name="android.permission.WAKE_LOCK" />
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
<uses-permission android:name="adnroid.permission.CHANGE_WIFI_STATE" /> <!-- 在SDCard中创建与删除文件权限 -->
<uses-permission android:name="android.permission.MOUNT_UNMOUNT_FILESYSTEMS" /> <!-- 往SDCard写入数据权限 -->
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.RESTART_PACKAGES" /> <!-- 在SDCard中创建与删除文件权限 -->
<uses-permission android:name="android.permission.MOUNT_UNMOUNT_FILESYSTEMS" /> <!-- 往SDCard写入数据权限 -->
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.RESTART_PACKAGES" />
<uses-permission android:name="android.permission.SYSTEM_ALERT_WINDOW" />
<uses-permission android:name="android.permission.VIBRATE" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />

@ -23,7 +23,9 @@ import android.view.View;
import android.view.Window;
import android.view.WindowManager;
import android.widget.ImageButton;
import android.widget.LinearLayout;
import android.widget.RelativeLayout;
import android.widget.SeekBar;
import android.widget.Toast;
import java.io.File;
@ -48,6 +50,7 @@ public class MyVideo extends Activity {
InputStream socketReader;
SocketListener socketListener2001;
SoundSocketListener socketListener2002;
SeekBar xSeekbar,ySeekbar;
private Socket socket;
private Socket soundSocket;
private RockerView rockerView;
@ -56,6 +59,54 @@ public class MyVideo extends Activity {
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
LinearLayout linearLayout = findViewById(R.id.linearLayout4);
xSeekbar = linearLayout.findViewById(R.id.xSeekbar);
ySeekbar = linearLayout.findViewById(R.id.ySeekbar);
xSeekbar.setOnSeekBarChangeListener(new SeekBar.OnSeekBarChangeListener() {
@Override
public void onProgressChanged(SeekBar seekBar, int progress, boolean b) {
try {
socketWriter.write(new byte[]{(byte) 0xff, (byte) 0x01, (byte) 0x07, (byte)((int)(progress * 1.8)), (byte) 0xff});
socketWriter.flush();
} catch (IOException e) {
throw new RuntimeException(e);
}
}
@Override
public void onStartTrackingTouch(SeekBar seekBar) {
}
@Override
public void onStopTrackingTouch(SeekBar seekBar) {
}
});
ySeekbar.setOnSeekBarChangeListener(new SeekBar.OnSeekBarChangeListener() {
@Override
public void onProgressChanged(SeekBar seekBar, int progress, boolean b) {
try {
socketWriter.write(new byte[]{(byte) 0xff, (byte) 0x01, (byte) 0x08, (byte)((int)(progress * 1.8)), (byte) 0xff});
socketWriter.flush();
} catch (IOException e) {
throw new RuntimeException(e);
}
}
@Override
public void onStartTrackingTouch(SeekBar seekBar) {
}
@Override
public void onStopTrackingTouch(SeekBar seekBar) {
}
});
this.requestWindowFeature(Window.FEATURE_NO_TITLE);//隐去标题应用的名字必须要写在setContentView之前否则会有异常
this.getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN);
setContentView(R.layout.myvideo);
@ -77,27 +128,28 @@ public class MyVideo extends Activity {
}
public void InitSocket(Activity activity) {
try {
socket = new Socket(InetAddress.getByName(CtrlIp), Integer.parseInt(CtrlPort));
soundSocket = new Socket(InetAddress.getByName(CtrlIp), 2002);
} catch (UnknownHostException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
try {
socketWriter = socket.getOutputStream();
socketReader = socket.getInputStream();
socketListener2001 = new SocketListener(activity,socketReader);
socketListener2002 = new SoundSocketListener(activity,soundSocket.getInputStream());
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
// TODO ²âÊÔ
// try {
// socket = new Socket(InetAddress.getByName(CtrlIp), Integer.parseInt(CtrlPort));
// soundSocket = new Socket(InetAddress.getByName(CtrlIp), 2002);
// } catch (UnknownHostException e) {
// // TODO Auto-generated catch block
// e.printStackTrace();
// } catch (Exception e) {
// // TODO Auto-generated catch block
// e.printStackTrace();
// }
// try {
// socketWriter = socket.getOutputStream();
// socketReader = socket.getInputStream();
// socketListener2001 = new SocketListener(activity,socketReader);
// socketListener2002 = new SoundSocketListener(activity,soundSocket.getInputStream());
// } catch (Exception e) {
// // TODO Auto-generated catch block
// e.printStackTrace();
// }
rockerView = new RockerView(this,socketWriter,this.getApplicationContext(),null);
RelativeLayout.LayoutParams params = new RelativeLayout.LayoutParams(500,500);
RelativeLayout.LayoutParams params = new RelativeLayout.LayoutParams(1000,1000);
addContentView(rockerView,params);
//Toast.makeText(this,"初始化网络失败!"+e.getMessage(),Toast.LENGTH_LONG).show();
}

@ -23,8 +23,8 @@ public class RockerView extends View{
Paint backPaint = new Paint(); // 背景画笔
Paint bubblePaint = new Paint(); // 气泡画笔
Paint rectfPaint = new Paint();
float bubbleX = 0, bubbleY = 0; // 定义气泡的位置
float backX = 0, backY = 0; // 背景圆的位置
float bubbleX = 300, bubbleY = 700; // 定义气泡的位置
float backX = 300, backY = 700; // 背景圆的位置
int radiusBack = 200, radiusBubble = 100; // 定义背景圆以及气泡的半径
RectF mRectF = new RectF(backX-radiusBack,backY-radiusBack,backX+radiusBack,backY+radiusBack);
Context mContext;

@ -0,0 +1,15 @@
<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
<item android:id="@android:id/background">
<shape>
<corners android:radius="60dp" />
<gradient
android:angle="0"
android:centerColor="#F39801"
android:centerY="0.20"
android:endColor="#F39801"
android:startColor="#F39801" />
</shape>
</item>
</layer-list>

@ -0,0 +1,15 @@
<?xml version="1.0" encoding="utf-8"?>
<shape
xmlns:android="http://schemas.android.com/apk/res/android"
>
<corners
android:radius="100dp"
/>
<solid
android:color="#B2FF0000"
/>
<size
android:width="100dp"
android:height="100dp"
/>
</shape>

@ -1,6 +1,7 @@
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:layout_height="fill_parent">
<!-- <wificar.RockerView-->
<!-- android:layout_width="100dp"-->
@ -16,30 +17,74 @@
android:id="@+id/menuIcon"
android:layout_width="60dp"
android:layout_height="60dp"
android:layout_marginEnd="5dp"
android:layout_marginTop="5dp"
android:layout_alignParentEnd="true"
android:text="菜单"
/>
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintTop_toTopOf="@+id/mySurfaceViewVideo" />
<LinearLayout
android:id="@+id/droppedMenu"
android:layout_width="100dp"
android:layout_width="300dp"
android:layout_height="200dp"
android:layout_below="@+id/menuIcon"
android:layout_alignParentEnd="true"
android:animateLayoutChanges="true"
android:orientation="vertical"
android:animateLayoutChanges="true"/>
app:layout_constraintEnd_toEndOf="@+id/mySurfaceViewVideo"
app:layout_constraintTop_toBottomOf="@+id/menuIcon">
</LinearLayout>
<wificar.MySurfaceView
android:id="@+id/mySurfaceViewVideo"
android:layout_width="match_parent"
android:layout_height="match_parent" />
android:layout_height="match_parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent"/>
<LinearLayout
android:id="@+id/linearLayout4"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textColor="#ffffff"
android:textSize="18dp"
android:text="舵机X轴" />
<SeekBar
android:id="@+id/xSeekbar"
android:progress="50"
android:layout_width="300dp"
android:layout_height="30dp" />
</LinearLayout>
<LinearLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/linearLayout4">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="舵机Y轴"
android:textColor="#ffffff"
android:textSize="18dp" />
<SeekBar
android:id="@+id/ySeekbar"
android:layout_width="300dp"
android:progress="50"
android:layout_height="30dp" />
</LinearLayout>
<ImageView
android:id="@+id/floatingView"
android:layout_width="match_parent"
android:layout_height="match_parent" />
android:layout_height="match_parent"
app:layout_constraintTop_toTopOf="parent" />
<LinearLayout
android:id="@+id/linearLayout2"
@ -48,9 +93,9 @@
android:layout_alignParentStart="true"
android:layout_alignParentEnd="true"
android:layout_alignParentBottom="true"
android:layout_marginRight="15dp"
android:layout_marginBottom="20dp"
android:gravity="right">
android:gravity="right"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent">
<TextView
android:layout_width="wrap_content"
@ -75,8 +120,8 @@
android:layout_height="wrap_content"
android:layout_above="@+id/linearLayout2"
android:layout_alignEnd="@+id/linearLayout2"
android:layout_marginTop="278dp"
android:layout_marginBottom="20dp">
app:layout_constraintBottom_toTopOf="@+id/linearLayout2"
app:layout_constraintEnd_toEndOf="@+id/mySurfaceViewVideo">
<TextView
android:id="@+id/showLive"
@ -110,8 +155,9 @@
android:layout_height="wrap_content"
android:layout_above="@+id/linearLayout3"
android:layout_alignEnd="@+id/linearLayout3"
android:layout_marginBottom="-255dp"
android:gravity="right">
android:gravity="right"
app:layout_constraintBottom_toTopOf="@+id/linearLayout3"
app:layout_constraintEnd_toEndOf="@+id/mySurfaceViewVideo">
<TextView
android:layout_width="wrap_content"
@ -132,32 +178,4 @@
android:textSize="20dp" />
</LinearLayout>
<!-- <ImageView-->
<!-- android:layout_width="wrap_content"-->
<!-- android:layout_height="wrap_content"-->
<!-- android:layout_alignParentStart="true"-->
<!-- android:layout_alignParentTop="true"-->
<!-- android:layout_marginStart="40dp"-->
<!-- android:layout_marginLeft="40dp"-->
<!-- android:layout_marginTop="260dp"-->
<!-- android:src="@drawable/rocket_circle1" />-->
<!-- <ImageView-->
<!-- android:layout_width="wrap_content"-->
<!-- android:layout_height="wrap_content"-->
<!-- android:layout_alignParentStart="true"-->
<!-- android:layout_alignParentTop="true"-->
<!-- android:layout_marginStart="65dp"-->
<!-- android:layout_marginLeft="65dp"-->
<!-- android:layout_marginTop="285dp"-->
<!-- android:src="@drawable/rocket_circle2" />-->
<!-- <wificar.RockerView-->
<!-- android:id="@+id/rockerView"-->
<!-- android:layout_width="265dp"-->
<!-- android:layout_height="300dp"-->
<!-- android:layout_alignParentStart="true"-->
<!-- android:layout_alignParentTop="true"-->
<!-- android:layout_marginStart="5dp"-->
<!-- android:layout_marginTop="167dp" />-->
</RelativeLayout>
</androidx.constraintlayout.widget.ConstraintLayout>
Loading…
Cancel
Save