android中Intent 传递byte数组问题

       今天在开发中,遇到传递byte数组问题:之前是在本页面通过蓝牙发送数据给外设,结果因为原因改成在上个页面提前转换好数据,然后Intent传递过来,再通过蓝牙进行发送,结果发现改成现在这样之后,通过蓝牙下发给外设的语音包,外设播放时语音明显听起来“糊”了。不对啊,文字转语音,之前怎么转的,现在也怎么转的,没啥区别啊,怎么之前下发没问题,现在就有了问题了呢,仔细想想,现在也就是多了Intent传递,忽然想到,Intent传值,需要对数据进行序列化,可是传递byte[ ],我怎么序列化,后来想到传递过去除了byte[ ],还有别的值,就写一个实体bean,把需要传递的byte数组,和其他值,都写成bean的字段,然后Bean实现Parcelable接口,new 一个Bean出来,把传递的值都set进去,然后Intent传递,最后在此页面拿到传递过来的实体bean,下发给外设,语音播报正常,完美解决!

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
好的,下面是一个Android Studio示例,可以实现Intent传递数组Intent传递集合、Intent传递对象、Intent传递Bitmap。其,我定义了一个Person类,用于演示Intent传递对象;另外,我在MainActivity编写了四个方法,每个方法分别实现了一种Intent传递方式。 1. Intent传递数组: ```java public void intentWithArray() { String[] array = new String[]{"item1", "item2", "item3"}; Intent intent = new Intent(this, SecondActivity.class); intent.putExtra("array", array); startActivity(intent); } ``` 在接收端的SecondActivity,可以通过以下代码获取数组: ```java String[] array = getIntent().getStringArrayExtra("array"); ``` 2. Intent传递集合: ```java public void intentWithList() { List<String> list = new ArrayList<>(); list.add("item1"); list.add("item2"); list.add("item3"); Intent intent = new Intent(this, SecondActivity.class); intent.putStringArrayListExtra("list", (ArrayList<String>) list); startActivity(intent); } ``` 在接收端的SecondActivity,可以通过以下代码获取集合: ```java List<String> list = getIntent().getStringArrayListExtra("list"); ``` 3. Intent传递对象: ```java public void intentWithObject() { Person person = new Person("Tom", 20); Intent intent = new Intent(this, SecondActivity.class); intent.putExtra("person", person); startActivity(intent); } ``` 在接收端的SecondActivity,可以通过以下代码获取对象: ```java Person person = (Person) getIntent().getSerializableExtra("person"); ``` 4. Intent传递Bitmap: ```java public void intentWithBitmap() { Bitmap bitmap = BitmapFactory.decodeResource(getResources(), R.drawable.sample); Intent intent = new Intent(this, SecondActivity.class); intent.putExtra("bitmap", bitmap); startActivity(intent); } ``` 在接收端的SecondActivity,可以通过以下代码获取Bitmap: ```java Bitmap bitmap = getIntent().getParcelableExtra("bitmap"); ``` 完整的MainActivity代码如下: ```java public class MainActivity extends AppCompatActivity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); Button btnArray = findViewById(R.id.btn_array); Button btnList = findViewById(R.id.btn_list); Button btnObject = findViewById(R.id.btn_object); Button btnBitmap = findViewById(R.id.btn_bitmap); btnArray.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { intentWithArray(); } }); btnList.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { intentWithList(); } }); btnObject.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { intentWithObject(); } }); btnBitmap.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { intentWithBitmap(); } }); } public void intentWithArray() { String[] array = new String[]{"item1", "item2", "item3"}; Intent intent = new Intent(this, SecondActivity.class); intent.putExtra("array", array); startActivity(intent); } public void intentWithList() { List<String> list = new ArrayList<>(); list.add("item1"); list.add("item2"); list.add("item3"); Intent intent = new Intent(this, SecondActivity.class); intent.putStringArrayListExtra("list", (ArrayList<String>) list); startActivity(intent); } public void intentWithObject() { Person person = new Person("Tom", 20); Intent intent = new Intent(this, SecondActivity.class); intent.putExtra("person", person); startActivity(intent); } public void intentWithBitmap() { Bitmap bitmap = BitmapFactory.decodeResource(getResources(), R.drawable.sample); Intent intent = new Intent(this, SecondActivity.class); intent.putExtra("bitmap", bitmap); startActivity(intent); } } ``` 另外,Person类的代码如下: ```java public class Person implements Serializable { private String name; private int age; public Person(String name, int age) { this.name = name; this.age = age; } public String getName() { return name; } public int getAge() { return age; } } ``` 希望这个示例能够帮助你理解Intent传递数组、集合、对象和Bitmap的实现方式。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值